我想知道__proto__
和Object.create
方法之间的区别。举个例子:
var ob1 = {a:1};
var ob2 = Object.create(ob1);
ob2.__proto__ === ob1; // TRUE
这意味着Object.create方法创建一个新对象,并将__proto__
链接设置为作为参数接收的对象。
为什么我们不直接使用__proto__
链接而不是使用create方法?
答案 0 :(得分:3)
为什么我们不直接使用proto链接而不是使用create方法?
因为__proto__
是非标准属性,因此不一定在每个浏览器中都可用。
然而,ES.next似乎考虑了这一点。更多信息:MDN - __proto__
。
答案 1 :(得分:3)
__proto__
是非标准的,并不会在任何地方都受到支持。 Object.create
是官方规范的一部分,应该得到未来各种环境的支持。
它在不同的地方也有不同的实现方式。
环境不同,例如,用a处理物体 null原型。在某些环境中,
__proto__
是继承自的 Object.prototype,所以带有null原型的对象没有特殊之处__proto__
属性
继续前进创建对象和实现继承的方法是Object.create
函数,如果确实需要访问原型,则需要使用Object.getPrototypeOf
这些函数是标准化的,应该在所有现代环境中都一样的工作