为什么没有MDN的`Object.create` polyfill设置`prototype.constructor`?

时间:2014-04-12 19:31:18

标签: javascript es5-shim

考虑MDN's Object.create polyfill

if (typeof Object.create != 'function') {
  (function () {
    var F = function () {};
    Object.create = function (o) {
      if (arguments.length > 1) { throw Error('Second argument not supported');}
      if (o === null) { throw Error('Cannot set a null [[Prototype]]');}
      if (typeof o != 'object') { throw TypeError('Argument must be an object');}
      F.prototype = o;
      return new F();
    };
  })();
}

特别关注这两行:

F.prototype = o;
return new F();

我想知道为什么设置F.prototype.constructor = F;为何不合适?

F.prototype = o;
F.prototype.constructor = F;  // why not?
return new F();

1 个答案:

答案 0 :(得分:3)

  

我在想,为什么设置F.prototype.constructor = F是不合适的??

F是一个临时函数,似乎有意无法从外部Object.create引用它。