为什么"var derived1 = new Object(base)"不将派生的1.prototype设置为base?



给定以下代码示例:

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是真的。

有关更多详细信息,请参阅规范:

  1. 如果提供了值,则
    1. 如果Type(value)为Object,则
      1. 如果该值是本机ECMAScript对象,则不要创建新对象,而只是返回值

相关内容

  • 没有找到相关文章

最新更新