proto link和Object.create的区别
Difference between proto link and Object.create
我想知道__proto__
和Object.create
方法的区别。举个例子:
var ob1 = {a:1};
var ob2 = Object.create(ob1);
ob2.__proto__ === ob1; // TRUE
这意味着对象。create方法创建一个新对象,并将__proto__
链接设置为接收到的对象作为参数。为什么不直接使用__proto__
链接,而不是使用create方法?
__proto__
是非标准的,并不是所有地方都支持。Object.create
是官方规范的一部分,未来的每个环境都应该支持它。
它在不同的地方也有不同的实现。
From Effective Javascript:
环境不同,例如,在对象的处理上零的原型。在某些环境中,
__proto__
继承自对象。原型,所以具有null原型的对象没有特殊的__proto__
地产
创建对象和实现继承的公认方法是Object.create
函数,如果您确实需要访问原型,您将希望使用Object.getPrototypeOf
。这些函数是标准化的,应该在所有现代环境中工作相同
为什么我们不直接使用proto link而不是使用create方法呢?
因为__proto__
是一个非标准的属性,因此不一定在每个浏览器中都可用。
然而,它似乎被考虑为ES.next。更多信息:MDN - __proto__
.
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在ember/handlers中使用value和valueBinding有什么区别
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- AngularJS Navigation (li ng-repeat, create header li), DOM
- angularjs中的ng网格和ui网格有什么区别
- 使用大括号和不使用bracs调用函数的区别
- Backbone - Collection.add() / Collection.create() 之间的区别
- 使用 Object.create() 和 Object.assign() 创建对象有什么区别?
- Object.create(foo)和new Object(foo)之间的区别
- proto link和Object.create的区别
- 使用Object.create()和使用赋值操作符有什么区别?
- Javascript在Object Literal方法中直接调用方法和使用Object.create方法的区别
- 在object .create中使用对象字面量和函数表达式有区别吗?