x não é uma função… o que você esperaria que o Object.create fizesse com um construtor?

Para esta pergunta, não estou esperando uma solução para resolver alguma coisa, mas gostaria de entender melhor as coisas.

Algumas citações das especificações:

Edição 5.1 (Ligação)

§15.2.3.5 Object.create (O [, Propriedades])

A função de criação cria um novo objeto com um protótipo especificado. Quando a função de criação é chamada, as seguintes etapas são executadas:

Se Type (O) não for Object ou Null, execute uma exceção TypeError.Seja obj o resultado da criação de um novo objeto como se fosse a expressão new Object () onde Object é o construtor interno padrão com esse nomeDefina a propriedade interna [[Prototype]] de obj para O.Se o argumento Properties estiver presente e não indefinido, adicione propriedades próprias a obj como se chamando a função interna padrão Object.defineProperties com os argumentos obj e Properties.Retornar obj.

Edição 6 - rascunho (Ligação)

§19.1.3.2 Object.create (O [, Propriedades])

A função de criação cria um novo objeto com um protótipo especificado. Quando a função de criação é chamada, as seguintes etapas são executadas:

Se Type (O) não for Object ou Null, execute uma exceção TypeError.Seja obj o resultado da operação abstrata ObjectCreate com o argumento O.Se o argumento Properties estiver presente e não indefinido, então a. Retorna o resultado da operação abstrata ObjectDefineProperties (obj, Properties).Retornar obj.

Se eu entendi corretamente, ambas as especificações permitem que o seguinte código seja executado:

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'

Parece que criou um objeto de um tipo deriva de(desculpe pela má terminologia ..) Function como eu testei no FireFox, e assimx énão invocável:

x(); // x is not a function 

Eu estou pensando em por que isso não impede um construtor para ser usado comoO ou apenas crie um construtor válido.

Então, eu estou querendo saber o que você espera que o Object.create faça com um construtor?

questionAnswers(2)

yourAnswerToTheQuestion