proto link和Object.create之间的区别

sac*_*024 5 javascript prototype object

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

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

ob2.__proto__ === ob1; // TRUE
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*ick 3

__proto__是非标准的,不会在所有地方都得到支持。 Object.create是官方规范的一部分,并且应该受到未来每个环境的支持。

不同地方的实施方式也不同。

来自有效的Javascript

例如,环境不同,对具有空原型的对象的处理也不同。在某些环境中,__proto__继承自Object.prototype,因此具有空原型的对象没有特殊 __proto__属性

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