function Gadget(name, color)
{
this.name = name;
this.color = color;
}
Gadget.prototype.rating = 3
var newtoy = new Gadget("webcam", "black")
newtoy.constructor.prototype.constructor.prototype.constructor.prototype
它总是返回 rating = 3 的对象。
但如果我执行以下操作:
newtoy.__proto__.__proto__.__proto__
链最终返回 null
。
同样在 Internet Explorer 中,如果没有 __proto__
属性,我将如何检查 null?
最佳答案
我最近一直在努力解决这个问题,最后想出了这个“ map ”,我认为它可以充分说明这个问题
http://i.stack.imgur.com/KFzI3.png
我知道我不是第一个编造这个的人,但弄清楚它比找到它更有趣:-)。无论如何,在那之后我发现例如这是另一个我认为基本相同的图表:
最令我惊讶的是发现 Object.__proto__
指向 Function.prototype
,而不是 Object.prototype
,但我'肯定有一个很好的理由:-)
如果有人想测试它,我也将图片中提到的代码粘贴到这里。请注意,一些属性被添加到对象中,以便在一些跳转后轻松知道我们在哪里:
Object.O1='';
Object.prototype.Op1='';
Function.F1 = '';
Function.prototype.Fp1 = '';
Cat = function(){};
Cat.C1 = '';
Cat.prototype.Cp1 = '';
mycat = new Cat();
o = {};
// EDITED: using console.dir now instead of console.log
console.dir(mycat);
console.dir(o);
关于javascript - __proto__ 与 constructor.prototype 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650764/