给定以下代码示例:
var base = {
one: "one",
two: 2,
test: function() { return "test"; }
};
var derived1 = new Object(base);
function Ctor() { };
Ctor.prototype = base;
var derived2 = new Ctor();
var proto1 = Object.getPrototypeOf(derived1);
var proto2 = Object.getPrototypeOf(derived2);
var isProto1Base = proto1 === base;
var isProto2Base = proto2 === base;
我原以为isProto1Base和isProto2Base都是真的。但是,isProto1Base===false和isProto2Base===true。为什么?
EDIT:固定标题以反映代码
new Object(base)
与Object.create(base)
不同。
CCD_ 3将把CCD_。
特别地,new Object(base) === base
是真的。
有关更多详细信息,请参阅规范:
- 如果提供了值,则
- 如果Type(value)为Object,则
- 如果该值是本机ECMAScript对象,则不要创建新对象,而只是返回值