Почему полифил 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
,