当前位置: 首页 > news >正文

邢台做网站服务飞卢盗版做的最好的网站

邢台做网站服务,飞卢盗版做的最好的网站,网络工程培训网络班,网站模板组件JavaScript中对象的属性分为两种#xff1a;数据属性和访问器属性。然后根据具体的上下文环境的不同#xff0c;又可以将属性分为#xff1a;原型属性和实例属性。原型属性是定义在对象的原型(prototype)中的属性#xff0c;而实例属性一方面来自构造的函数中#xff0c;然…JavaScript中对象的属性分为两种数据属性和访问器属性。然后根据具体的上下文环境的不同又可以将属性分为原型属性和实例属性。原型属性是定义在对象的原型(prototype)中的属性而实例属性一方面来自构造的函数中然后就是构造函数实例化后添加的新属性。在JavaScript中除了检测对象的属性是否存在还会经常对对象的属性进行遍历(枚举)。而在JavaScript中遍历一个对象的属性并不太简单主要有两个原因JavaScript中的对象通常都处在某个原型链中它会从一个或多个的上层原型上继承一些属性JavaScript中的属性不光有值它还有一些除了值以外的其他特性其中一个影响属性遍历的特性就是[[Enumerable]]如果该值为true则这个属性是可枚举的否则反之这篇文章将总结有关于JavaScript中对象属性枚举的几种方法for ... inObject.keys()Object.getOwnPropertyNames()for ... offor ... infor...in循环可以遍历对象中所有可枚举的对象属性(包括对象自有属性和继承的属性)。不过需要注意的是使用for...in循环遍历对象属性时返回的属性会因为各个浏览器不同导致对象属性遍历的顺序有可能不是当初构建时的顺序。var obj {x: 1,y: 2,z: 3}obj.propertyIsEnumerable(toString); // false,不可枚举for (prop in obj) {console.log(prop); // 输出x,y,z但不会输出toString}其实for...in操作的主要目的就是遍历对象的属性如果只需要获取对象的实例属性(跳过继承属性)可以使用hasOwnProperty()进行过滤for (prop in obj) { if (!obj.hasOwnProperty(prop)) continue; // 跳过继承属性}如此一来可以这样来使用for...in循环遍历对象属性(function() {var getEnumPropertyNames function(obj) {if (typeof obj ! object) throw TypeError(); // 参数必须是对象var props []; // 将要返回的数组for (var prop in obj) { // 遍历所有可枚举的属性if (obj.hasOwnProperty(prop)) { //判断是否是自有属性props.push(prop); //将属性名添加到数组中}}return props; //返回这个数组}// 实例化var obj {x: 1,y: 2}obj.propertyIsEnumerable(toString) var propertys getEnumPropertyNames(obj);console.log(propertys.length); //2console.log(propertys.join(,)); //x,y})()Object.keys()Object.keys()方法会返回一个由给定对象的所有可枚举自身属性的属性名组成的数组数组中属性名的排列顺序和使用for...in循环遍历该对象时返回的顺序一致。两者最大的区别在于for...in还会遍历出一个对象从其原型链上继承到的可枚举属性。Object.keys() 返回一个所有元素为字符串的数组其元素来自于从给定的对象上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。var obj {x: 1,y: 2,z: 3}obj.propertyIsEnumerable(toString);console.log(Object.keys(obj)); // [x, y, z]Object.keys()可以遍历对象可枚举的自身属性。也就是说对象的属性不是从原型链上继承下来的。注意在 ES5 环境如果传入的参数不是一个对象而是一个字符串那么它会报 TypeError。在 ES6 环境如果传入的是一个非对象参数内部会对参数作一次强制对象转换如果转换不成功会抛出 TypeError。// 在 ES5 环境Object.keys(foo); // TypeError: foo is not an object// 在 ES6 环境Object.keys(foo); // [0, 1, 2]// 传入 null 对象Object.keys(null); // Uncaught TypeError: Cannot convert undefined or null to object// 传入 undefinedObject.keys(undefined); // Uncaught TypeError: Cannot convert undefined or null to objectObject.getOwnPropertyNames()Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性)组成的数组,但不会获取原型链上的属性。该数组对元素是 obj 自身拥有的枚举或不可枚举属性名称字符串。// 类数组对象var obj {0 : a,1 : b,2 : c};console.log(Object.getOwnPropertyNames(obj).sort()); // [0, 1, 2]for...offor...of为ES6新增的方法主要来遍历可迭代的对象(包括Array, Map, Set, arguments等)它主要用来获取对象的属性值而for...in主要获取对象的属性名。var colors [red, green, blue];colors.length 5;colors.push(yellow);for (var i in colors) {console.log(colors[i]); // red green blue yellow}for (var j of colors) {console.log(j); // red green blue undefined undefined yellow}可以看到使用for...of可以输出包括数组中不存在的值在内的所有值。其实除了使用for...of直接获取属性值外我们也可以利用Array.prototype.forEach()来达到同样的目的。var colors [red, green, blue];colors.length 5;colors.push(yellow);for (var i in colors) {console.log(colors[i]); // red green blue yellow}for (var j of colors) {console.log(j); // red green blue undefined undefined yellow}总结一下其实这几个方法之间的差异主要在属性是否可可枚举是来自己原型还是实例。想要了解更多相关知识可访问 前端学习网站
http://www.huolong8.cn/news/223799/

相关文章:

  • 深圳移动官网网站建设自己做网页怎么赚钱
  • 网站制作网站建站电商小程序需要什么资质
  • 免费服务器搭建网站详细教程邢台地面波天线节目表
  • 简单介绍网站建设的一般流程网站建设技术参数
  • 网站开发与网页制作难不难开发公司前期手续流程
  • 滁州市城市建设投资有限公司网站建设集团是做什么的
  • 个人网站开发的论文镇江久一信息技术有限公司
  • 平台网站可以做第三方检测报告wordpress 本地上传服务器
  • 家政公司响应式网站建设案例html所有标签大全
  • 支付网站建设的分录项目计划书ppt模板免费
  • 镇江网站建设网站 绝对路径 相对路径
  • 中职网站建设wordpress扁平化登录页源码
  • 灰蓝 网站模板网络推广时
  • 合肥那家公司做网站电子商务网站建设技能实训答案
  • 长期网站外包社区推广活动方案
  • 啥十小企业网站建设深圳品牌创意网站建设
  • 海淀公司网站建设方案做跨境电商看国外的哪些网站
  • 怎样做google网站10元备案域名购买
  • 网站项目功能需求清单wordpress激活
  • 延边网站建设政务网站集约化建设要求
  • .net 网站开发视频教程网站建设技术人员工作
  • 法拍重庆网站企业大型网站开发需要多少钱
  • 永春县住房和城乡建设网站大连公司注册
  • 建立什么样的网站好汽车租赁网站建设内容
  • 企业微营销网站在哪里可以发布自己的广告
  • 学校申请建设网站的原因婺城区建设局网站
  • 甜品网站模板萍乡网站开发
  • 青岛做物流网站湘潭网站建设 搜索磐石网络
  • 海棠网站注册网站没备案可以做商城吗
  • ppt模板下载免费版网站网站建设 图片上传