【发布时间】:2013-03-11 13:14:30
【问题描述】:
我想知道__proto__ 和Object.create 方法的区别。举个例子:
var ob1 = {a:1};
var ob2 = Object.create(ob1);
ob2.__proto__ === ob1; // TRUE
这意味着 Object.create 方法创建一个新对象并将__proto__ 链接设置为作为参数接收的对象。
我们为什么不直接使用__proto__链接而不是使用create方法呢?
【问题讨论】:
-
1.
__proto__是非标准的。 2)。Object.create可以接受第二个有用的参数。 -
另一个值得注意的区别是
__proto__允许您将现有对象的原型设置为不同的原型,而对于标准 Javascript(即使在 ECMAScript 5 中),它只能 获取原型(使用Object.getPrototypeOf),而不是设置它。 -
我们可以传递什么作为第二个参数?
-
@blunderboy:您可以在 MDN 文档中了解它:developer.mozilla.org/en-US/docs/JavaScript/Reference/…。
-
这个库包含一个很好的 shim,可以让
Object.create的第二个参数为旧版浏览器优雅地回退:github.com/cujojs/poly
标签: javascript object prototype