【问题标题】:Are there objects with no prototypes in Javascript?Javascript 中是否存在没有原型的对象?
【发布时间】:2016-06-03 03:51:01
【问题描述】:

有人告诉我所有对象都需要有一个原型,但似乎可以用 null 创建一个

var obj= Object.create(null);

上面的对象是没有原型的还是它有一些不可访问的原生对象作为它的原型,null 是否意味着它没有原型,而只是它没有作者创建的原型?

【问题讨论】:

    标签: javascript prototype


    【解决方案1】:

    它没有原型(或者原型是null)。使用Object.prototype(null) 创建的对象无法访问任何属性。

    观察Object.getPrototypeOf(Object.create(null)) 的结果是null

    【讨论】:

      【解决方案2】:

      所有对象都有一个内部 [[Prototype]] 槽,可以是 null 或其他对象。

      [[Prototype]] 为null 的对象的一些示例确实是Object.prototypeObject.create(null)

      9.1 Ordinary Object Internal Methods and Internal Slots

      所有普通对象都有一个名为 [[Prototype]] 的internal slot。 这个internal slot 的值要么是null,要么是一个对象 并用于实现继承。数据属性 [[Prototype]] 对象被继承(作为属性可见 子对象)用于获取访问权限,但不适用于设置访问权限。 获取访问和设置访问都继承了访问器属性。

      【讨论】:

        猜你喜欢
        • 2011-12-17
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多