【发布时间】:2013-02-22 06:41:00
【问题描述】:
在 JavaScript 中,据说对象字面量具有原型链接,但是 函数对象同时具有原型链接和原型属性。
那么,基于上述内容,是否可以说继承(使用原型属性)仅适用于函数对象(构造函数版本)而不适用于对象字面量?
另外,补充一点,__proto__ 属性并非在所有浏览器中都可以访问...
【问题讨论】:
-
在使用对象字面量时,您不能更改现有对象的原型或指定原型,因此,如果我正确理解您的问题,我会说是的。
-
所以这将涉及大多数浏览器行为(除了少数像 Firefox 允许设置“proto”链接)...所以可以说继承可以使用 Object 字面量实现(但仅限于允许设置 proto 链接的浏览器,如 Firefox )?
-
对象字面量本身继承自
Object.prototype,因此您仍然可以获得继承,但您目前无法设置比使用字面量语法时更长的原型链,就像使用构造函数一样。构造函数不是唯一的方法。您可以改用Object.create。 -
__proto__属性是非标准的,甚至在 FF 中已弃用。我只是在谈论官方规格。但正如系统所说,当然每个对象都继承自某些东西,唯一的问题是您是否可以影响原型链。 -
可以使用
Object.create(proto)方法对对象字面量进行继承。此外,您可以通过这种方式创建一个对象,该对象甚至不从基础对象继承(使用Object.create(null))。
标签: javascript jquery oop prototypal-inheritance