0

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

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

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

这就是我的意思:

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

1 回答 1

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
于 2015-03-27T16:54:32.847 回答