javascript - __proto__ 与 constructor.prototype 有何不同?

标签 javascript inheritance prototype-programming

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 enter image description here

我知道我不是第一个编造这个的人,但弄清楚它比找到它更有趣:-)。无论如何,在那之后我发现例如这是另一个我认为基本相同的图表:

Javascript object layout

最令我惊讶的是发现 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/

相关文章:

javascript - 在页面加载时调用上面定义的 Javascript 方法

python - 在不同的实现中继承自 Tkinter Frame

javascript - 在js样式对象中设置自己的变量

javascript - Jquery 修复向下滚动到底部 - 不工作

javascript - 如何更改此格式?

c# - Resharper 提议从 WPF 中的 Window 类中删除冗余继承

c++ - 如何有条件地实例化不同的父/子类?

javascript - 原型(prototype) "this"不工作 (JS)

JavaScript 原型(prototype)困惑

Javascript - 原型(prototype)数组打印测试错误