Questa risposta è stata preceduta, ma volevo confermare la mia comprensione. In questo codice:JavaScript: Constructor vs Prototype
var somePrototype = {
speak: function() {
console.log("I was made with a prototype");
}
}
function someConstructor() {
this.speak = function() {
console.log("I was made with a constructor");
}
}
var obj1 = Object.create(somePrototype);
var obj2 = new someConstructor();
obj1.speak();
obj2.speak();
Entrambi stanno fondamentalmente facendo la stessa cosa, giusto? L'unica differenza è che il function someConstructor()
viene issato, il che significa che posso chiamare nuove istanze di esso prima che sia definito, se necessario, mentre il var somePrototype
può essere chiamato solo dopo che è stato definito. Oltre a questo, non c'è differenza?
Stanno facendo cose * simili *, ma sono molto distintamente diversi. – Pointy
ci sono diverse (forse sottili) differenze, ma non posso fare a meno di pensare che sia stato spiegato prima ... – dandavis
@dandavis sì, è stato spiegato prima :) Tuttavia, la semantica di JavaScript e dei prototipi è strana e confusa. – Pointy