Почему полифил MDN `Object.create` не устанавливает`prototype.constructor`?

Учитывая МДН Object.create полифилл:

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 ответ

Решение

Мне было интересно, почему не следует устанавливать F.prototype.constructor = F;?

F это временная функция, и кажется преднамеренным, что нет способа ссылаться на нее извне Object.create,

Другие вопросы по тегам