JavaScript原型链可能无限循环查找

时间:2015-03-27 16:14:21

标签: javascript web loops proto

我有一个关于JavaScript对象原型链的查询。假设我创建了一个Object

var first =  { a: 1};
var second = Object.create(first);

现在我知道如果我在第二个对象上查找属性a,由于原型继承,我会得到值1。但是,假设我将second分配给第一个对象的隐藏__ proto__属性,那么查找是否应该停留在查找周期中?

这就是我的意思:

first.__proto__ = second;
cosole.log(second.z); //Would it keep looking for both objects in a cycle?

1 个答案:

答案 0 :(得分:1)

它不会进入无限循环,因为它不必查看第二个对象中的内容。相反,它显示有第二个对象,然后如果你想进一步研究它,你可以分开执行。

以下是我在伪代码中的含义的一个简单示例,以使其更易于理解:

OBJ 1 = {a:1}

OBJ 2 = Prototype of OBJ 1
Prototype of OBJ 1 = OBJ 2

print OBJ 2

Shows:
// Once again for clarity:
// The reason it is not entering into an infinite loop is because 
// it doesn't iterate through the prototype object and instead it SHOWS the prototype. 
// If you later want to see what's inside of it you can do so with an extra step. 
// But it gives you minimal available information and so you see this:

a: 1
proto: OBJ 1
相关问题