js原型链中的函数为什么可以用for in来遍历

发布网友 发布时间:2022-04-22 03:21

我来回答

3个回答

热心网友 时间:2022-04-22 12:24

1.原型链:

2 for..in

3.例子

function A(){this.a="a"}

function B(){this.b="b"}

B.prototype=new A();

var a=new B();

for(var k in a){console.log("属性"+k+": 值"+a[k])}

4.控制台


热心网友 时间:2022-04-22 13:42

Enumerable 特性

属性特性 enumerable 定义了对象的属性是否可以在 for...in 循环和 Object.keys() 中被枚举。

var o = {};
Object.defineProperty(o, "a", { value : 1, enumerable:true });
Object.defineProperty(o, "b", { value : 2, enumerable:false });
Object.defineProperty(o, "c", { value : 3 }); 
// enumerable defaults to false
o.d = 4; 
// 如果使用直接赋值的方式创建对象的属性,
// 则这个属性的enumerable为true
for (var i in o) {    
  console.log(i);  
}
// 打印 'a' 和 'd' (in undefined order)
Object.keys(o); // ["a", "d"]
o.propertyIsEnumerable('a'); // true
o.propertyIsEnumerable('b'); // false
o.propertyIsEnumerable('c'); // false

遍历至某属性时,如果值为undefined,则会沿原型链查找,如果找到该值并且enumerable为true,就会被遍历到

热心网友 时间:2022-04-22 15:17

因为原型连里面的任何东西,不管是属性还是函数,都是这个原型对象的属性

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com