х не функция ... что бы вы ожидали, что Object.create будет делать с конструктором
На этот вопрос я не ожидаю решения, чтобы что-то решить, но хотел бы понять вещи лучше ..
Некоторые цитаты из спецификаций:
Издание 5.1 (Ссылка)
§15.2.3.5 Object.create (O [, Properties])
Функция create создает новый объект с указанным прототипом. Когда вызывается функция create, предпринимаются следующие шаги:
Если Type (O) не является Object или Null, выдается исключение TypeError.Пусть obj будет результатом создания нового объекта, как будто выражением new Object (), где Object является стандартным встроенным конструктором с таким именемУстановите для внутреннего свойства [[Prototype]] объекта obj значение O.Если аргумент Properties присутствует и не определен, добавьте свои собственные свойства в obj, как будто вызывая стандартную встроенную функцию Object.defineProperties с аргументами obj и Properties.Вернуть объектИздание 6 - черновик (Ссылка)
§19.1.3.2 Object.create (O [, Properties])
Функция create создает новый объект с указанным прототипом. Когда вызывается функция create, предпринимаются следующие шаги:
Если Type (O) не является Object или Null, выдается исключение TypeError.Пусть obj будет результатом абстрактной операции ObjectCreate с аргументом O.Если аргумент Properties присутствует и не определен, то a. Возвращает результат абстрактной операции ObjectDefineProperties (obj, Properties).Вернуть объектЕсли я правильно понял, обе спецификации позволяют выполнить следующий код:
function F() {
}
var x=Object.create(F);
// a minimal test
alert(x.prototype.constructor===F); // true
alert(x instanceof Function) // true
alert(typeof x) // 'object'
Кажется, он создал объект типа, производного от(извините за плохую терминологию ..) Function
как я тестировал в FireFox, и такx
являетсябез возможности ссылаться:
x(); // x is not a function
Я думаю о том, почему он не запрещает использовать конструктор какO
или просто создайте действительный конструктор.
Поэтому мне интересно, что вы ожидаете, что Object.create будет делать с конструктором?