摘要:语句可以用来遍历一个对象中的所有属性名,该枚举过程会列出所有的属性包括函数和你可能并不关系的原型中的属性,所以有必要了来过滤掉不想要的值。方法不会检查原型链接着来看枚举。
for in 语句可以用来遍历一个对象中的所有属性名,该枚举过程会列出所有的属性(包括函数和你可能并不关系的原型中的属性),所以有必要了来过滤掉不想要的值。常用的过滤器是 hasOwnProperty 方法,以及使用 typeof 来排除函数。
typeof 操作符可以用于确定属性的类型。但对原型链中的属性也会产生值:
typeof flight.toString; // "function" typeof flight.constructor; // "function"
这儿时候可以使用 hasOwnProperty 方法,如果对象拥有独有的属性,将会返回 true。hasOwnProperty 方法不会检查原型链:
flight.hasOwnProperty("number"); // true flight.hasOwnProperty("constructor"); // false
接着来看枚举。
在 for in 中属性名出现的顺序是不确定的,所以如果想要确保属性以特定的顺序出现,最好的办法就是完全避免使用 for in 语句,而是使用 for 。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/80291.html
摘要:原型对象与方法枚举的问题原型属性的属性与的枚举问题有的时候设置成时仍然会被方法枚举到。新建立的原型对象的属性,也是按照规则返回结果。最后,再重申一遍,如果原型对象合实例存在同名属性,无论如何都会被枚举。 js 原型对象与for-in 方法枚举的问题 原型属性的[[enumerable]]属性与for-in 的枚举问题 有的时候[[enumerable]]设置成false 时仍然会被fo...
摘要:等内置的方法和属性都是不可枚举的北京北京可以遍历可枚举但对象,包括不是它本身但存在于原型链上的属性。北京循环可迭代对象循环可迭代对象包括,,,,,类数组的对象比如对象对象以及生成器对象等。 在JavaScript中,我们经常需要去循环迭代方法操作数组对象等,常见等循环方法有 for、for in、for of、forEach等。 1.for循环 for循环是最基础常见的一种循环,圆括号...
摘要:像和使用内置构造函数所创建的对象都会继承自和的不可枚举属性,例如的方法或的方法。循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性更接近原型链中对象的属性覆盖原型属性。在中,非对象参数被强制转换为对象。 for...in for...in 循环只遍历可枚举属性。像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和S...
摘要:用循环和方法都可以获取对象的属性,那么它们有什么区别呢假设有一个对象定义不可枚举属性程序的输出结果为两种方式都获取到了对象的所有可枚举属性,而对于不可枚举属性两种方式都无法得到。 用for...in循环和Object.keys方法都可以获取对象的属性,那么它们有什么区别呢?假设有一个对象a: var a = {x: 1, y: 2}; Object.defineProperty(a, ...
摘要:简单说就是一个有一个函数,这个函数执行的返回值一定是一个对象,对象有两个属性标记迭代是否结束,标记这次迭代的结果值。 引言 遍历对象是平常工作中很常见的一个操作,几乎是日常操作,但是遍历对象真的是一件很容易的事情么,显然不是的。 常用的方式 for...in for (variable in object) {...} 这个是一个很常见的用法,相信每个人顺手都可以写出来。但是这里需要主...
摘要:附如果你想获取一个对象的所有属性甚至包括不可枚举的即可见下面一种方法方法返回一个由指定对象的所有自身属性的属性名包括不可枚举属性但不包括值作为名称的属性组成的数组。 JavaScript中遍历获取对象属性和方法主要有三种: Object.keys()、Object.getOwnPropertyNames()、for...in... 一、Object.keys()、Object.get...
阅读 786·2021-11-11 16:54
阅读 1517·2021-08-24 10:01
阅读 1911·2019-08-30 15:54
阅读 3296·2019-08-29 14:02
阅读 3129·2019-08-28 18:22
阅读 2244·2019-08-28 18:09
阅读 3697·2019-08-26 10:26
阅读 2664·2019-08-23 18:23