【发布时间】:2016-08-10 03:05:36
【问题描述】:
我一直在阅读 JavaScript 中的原型链,并得出了两个略有不同的定义。据说 JavaScript 中的每个对象都有一个原型,而该原型又具有另一个原型。顶层原型(Grand)也可能有原型,链可以继续。现在链条将停在最后一个物体上。 JavaScript the Good 部分表示链在Object.prototype 终止,MDN 表示null 是链终止的最终链接。
Javascript:好的部分
每个对象都链接到一个原型对象,它可以从中继承属性。 从对象字面量创建的所有对象都链接到
Object.prototype,这是 JavaScript 的标准对象。
MDN
每个对象都有一个指向另一个对象的内部链接,称为其原型。该原型对象有自己的原型,依此类推,直到 到达一个对象,其原型为 null。 null,顾名思义,没有原型,是这个原型链中的最后一环。
问题:
- javascript 中原型链的结尾是什么——null 或 Object.prototype?还是
null和Object.prototype是一回事? - 不是从对象字面量创建的对象是否没有链接到
Object.prototype? - 假设我有一个对象
var x = { len: 4, breadth: 5}。 JavaScript 会自动创建它的原型x.prototype。原型链有多长?x.prototype是否只有一个原型Object.prototype制作 3 点链?- JavaScript 如何在内部创建自动原型?
【问题讨论】:
-
创建没有原型的对象的唯一方法不是使用 Object.create 吗?
-
@evolutionxbox 我不太了解
Object.create。我在 JAvascript 中阅读了它的好部分,但无法理解。作者使用了typeof Object.create !== 'function')但Object.create已经是一个函数,所以我不知道他的代码将如何执行。 -
他在 Object.create 出现在 ES5 之前写了这本书。所以 if 语句只是检查 Object.create 是否已经存在。
-
嗯,这是有道理的。虽然我仍然不明白他的代码。在解决当前的疑问之后,我会再问一个问题。
-
看看this。它可能有助于向您解释原型链。
标签: javascript oop object prototype