х не функция ... что бы вы ожидали, что 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 будет делать с конструктором?

Ответы на вопрос(2)

Ваш ответ на вопрос