gpt4 book ai didi

javascript - 关于为什么空对象实例使用 Object.create 表现不同的解释

转载 作者:行者123 更新时间:2023-11-29 22:04:07 26 4
gpt4 key购买 nike

我在 node.js v0.10.22 中运行了以下命令。我了解这个初始对象创建片段:

> var o1 = {};
> var o2 = Object.create(null)
> var o3 = Object.create(Object.prototype);
> var o4 = Object.create({})

> o1
{}
> o2
{}
> o3
{}
> o4
{}

> o1.prototype === void 0
true
> o2.prototype === void 0
true
> o3.prototype === void 0
true
> o4.prototype === void 0
true

但是以下内容让我感到困惑:

> o1 instanceof Object
true
> o2 instanceof Object
false
> o3 instanceof Object
true
> o4 instanceof Object
true

这种行为背后的解释是什么?

最佳答案

当你写这样的东西时:

var ob = {}; 
// its equivalent to Object.create(Object.prototype)

当你写的时候:

Object.create(null) 
// doesn't inherit from anywhere and thus has no properties at all.

换句话说。默认情况下,javascript 对象继承自 Object,除非您显式创建它并指定 null 作为其原型(prototype),如 Object.create(null)

您还必须阅读此 question and answer , 我觉得很棒

关于javascript - 关于为什么空对象实例使用 Object.create 表现不同的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21927622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com