我在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
这种行为背后的解释是什么?
答案 0 :(得分:2)
当你写这样的东西时:
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作为其原型,如Object.create(null)
此外,您必须阅读此question and answer,我认为它很棒