【发布时间】:2012-04-15 03:03:36
【问题描述】:
这个图再次表明每个对象都有一个原型。构造函数 function Foo 也有自己的
__proto__,即 Function.prototype, 反过来又通过其__proto__属性再次引用 Object.prototype。因此,重复一遍, Foo.prototype 只是一个显式的 Foo 的属性,指的是 b 和 c 对象的原型。
var b = new Foo(20);
var c = new Foo(30);
__proto__ 和 prototype 有什么区别?
注意:上面 2010 年的文章现在有a 2nd edition (2017)。
【问题讨论】:
-
我认为自上而下或自下而上是一个偏好问题。我实际上更喜欢这种方式,所以我可以追踪图表,直到找到某些东西的来源。
-
我喜欢 JavaScript 如何使用原型继承将 y.constructor 解析为 y.__proto__.constructor。我也喜欢 Object.prototype 如何位于原型继承链的顶部,其中 Object.prototype.__proto__ 设置为 null。我还喜欢该图如何对程序员如何将对象视为 1. 实例、2. 构造函数、3. 原型进行三列概念可视化,构造函数在通过 new 关键字实例化时与这些实例相关联。
-
在您观看 youtube.com/watch?v=_JJgSbuj5VI 之类的内容后,图表立即有意义,顺便说一句
-
现在,当我通读答案时,觉得有义务真的推荐上面的视频,因为它确实有一个清晰的(和非 WTFy)解释发生了什么:)
标签: javascript prototype javascript-objects prototypal-inheritance