javascript - 原型(prototype)链接和 Object.create 之间的区别

标签 javascript object prototype

我想知道 __proto__Object.create 方法之间的区别。举个例子:

var ob1 = {a:1};
var ob2 = Object.create(ob1);

ob2.__proto__ === ob1; // TRUE

这意味着 Object.create 方法创建一个新对象并将 __proto__ 链接设置为作为参数接收的对象。 为什么我们不直接使用 __proto__ 链接而不是使用 create 方法?

最佳答案

__proto__ 是非标准的,不会在任何地方都得到支持。 Object.create 是官方规范的一部分, future 的每个环境都应该支持它。

它在不同地方的实现也不同。

来自 Effective Javascript :

Environments differ for example, on the treatment of objects with a null prototype. In some environments, __proto__ is inherited from Object.prototype, so an object with a null prototype has no special __proto__ property

创建对象和实现继承的公认方法是 Object.create 函数,如果您确实需要访问原型(prototype),则需要使用 Object.getPrototypeOf 这些函数是标准化的,应该在所有现代环境中都可以正常工作

关于javascript - 原型(prototype)链接和 Object.create 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15339550/

相关文章:

javascript - 单击链接并使用 Javascript 在页面的另一部分中查看

javascript - 正则表达式用特殊字符中的所有属性替换 html 标签

javascript - 如何将新属性及其参数添加到现有原型(prototype)/构造函数

javascript - someFunction.Prototype.constructor 与 someFunction.constructor

用于维护状态和创建提供附加功能的嵌套对象的 Javascript 模式

javascript - 为什么单独使用 map 会做同样的事情而使用 map.call 呢?

javascript - e.persisted 在 Javascript 中做什么?

java - 物理游戏的内存高效AI对象

javascript - 如何访问另一个 JS 对象中匹配的对象属性

javascript - 如何让继承在 JavaScript 中起作用?