Per questa domanda, non mi aspettavo una soluzione per risolvere qualcosa, ma vorrei capire meglio le cose ..x non è una funzione ... cosa ti aspetti Object.create a che fare con un costruttore
alcuni citazione dalle specifiche:
Edition 5,1 (Link)
§15.2.3.5 Object.create (O [, Proprietà])
01.235.La funzione di creazione crea un nuovo oggetto con un prototipo specificato. Quando viene chiamata la funzione di creazione, vengono eseguiti i seguenti passaggi:
- Se Type (O) non è Object o Null genera un'eccezione TypeError.
- Sia obj be il risultato della creazione di un nuovo oggetto come dall'espressione new Object() dove Object è il costruttore incorporato standard con quel nome
- Imposta la proprietà interna [[Prototype]] di obj su O
- Se l'argomento Proprietà è presente e non indefinito, aggiungere le proprie proprietà a obj come se richiamasse la funzione predefinita standard Object.defineProperties con argomenti obj e Properties.
- Oggetto di reso.
Edition 6 - progetto (Link)
§19.1.3.2 Object.create (O [, Proprietà])
La creazione di funzione crea un nuovo oggetto con un determinato prototipo. Quando la funzione di creare si chiama, sono prese le seguenti operazioni:
- Se Type (O) non è oggetto o Null un'eccezione TypeError.
- Let obj essere il risultato della operazione astratta ObjectCreate con argomento O.
- se le proprietà argomento è presente e non definito, quindi a. Restituisce il risultato dell'operazione astratta ObjectDefineProperties (obj, Properties).
- Oggetto di reso.
- Se Type (O) non è oggetto o Null un'eccezione TypeError.
Se correttamente intesa, sia delle specifiche permettere il seguente codice da eseguire:
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'
Sembra che crea un oggetto di un tipo deriva da (scusa per la scarsa terminologia ..)Function
come ho provato in Firefox, e così è x
non invocabile:
x(); // x is not a function
sto pensando perché non è vero né impedire che un costruttore per essere usato come O
o semplicemente creare una valida costruttore.
Quindi mi chiedo cosa ci si aspetterebbe da Object.create con un costruttore?
Mi aspetto 'Object.create' di ignorare se si tratta di un costruttore, in quanto l'algoritmo non ha bisogno di un oggetto callable. Poiché restituisce un semplice 'Object', mi aspetto anche che il risultato non sia invocabile. – Zeta
A cosa serve la taglia? Ci sono ancora domande in sospeso? Vorresti che le risposte fossero più dettagliate? – Bergi
È difficile sceglierne uno per contrassegnare come risposta accettata quando due hanno gli stessi voti. –