我想知道 __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/