Я только что посмотрел вводную JavaScript лекцию от Дугласа Крокфорда, в которой он упоминает функцию с именем object
, которая должна использоваться для создания нового объекта, связанного с объектом, в качестве его параметра.Я думаю, что он имеет в виду, что если я скажу
var objB = object(objA);
Внутренняя ссылка objB
[[prototype]]
установлена на objA
, хотя он явно не сформулировал это так.
С другой стороны, я прочитал его книгу , в которой он вообще не упоминает такую функцию, а вместо этого представляет свой собственный способ создания объекта из прототипа,определяя следующую функцию:
Object.create = function(o) {
var F = function() {};
F.prototype = o;
return new F();
}
По существу, пользуясь поведением оператора new
, который устанавливает внутреннюю ссылку [[prototype]]
вновь созданного объекта на то, на что указывает свойство prototype
функции конструктора.
Мой вопрос: зачем ему опускать встроенную функцию и придумывать собственный способ сделать то же самое?Является ли предыдущий вызов функции object
действительно эквивалентным
var objB = Object.create(objA);
Или есть небольшая разница?