Javascript中__proto__的属性

时间:2017-01-27 09:47:42

标签: javascript

我有以下代码

var person={
    firstname:"Geet",
    getFullName:function(){
        return this.firstname;
    }
}

var test={
    firstname:"Test"
}

test.__proto__=person;
for (var prop in test){
    console.log(prop + ': '+test[prop]);
}

输出: -

 firstname: Test
 getFullName: function (){
     return this.firstname;
 }

链条是如何停在那里的。为什么它不打印 proto 对象的属性。如何处理。

1 个答案:

答案 0 :(得分:1)

您根本不应该使用__proto__,请参阅MDN Object.prototype.__proto__

for..in 仅迭代对象及其[[Prototype]]链的可枚举属性。因此,您可以直接在 test 上获取 firstname 。然后 getFullName 位于 person 上。

你没有得到 person.firstname 它已经被粉碎了#34;"通过 test 上的 firstname 属性。就是这样,[[Prototype]]链上的剩余对象上没有更多可枚举的属性,即 Object.prototype null

如果您希望看到__proto__属性,则无法枚举,请参阅ECMA-262 B.2.2.1 Object.prototype.__proto__

相关问题