Data l'ereditarietà JS semplice, qual è la differenza pratica nella funzione di base tra questi due esempi? In altre parole, quando una persona dovrebbe scegliere di definire una funzione su "questo" anziché sul prototipo (o viceversa)?Qual è la differenza tra this.function e prototype.function?
Per me il secondo esempio è più semplice da digerire, ma quanto c'è di più in questo?
funzione definita su questo:
//base
var _base = function() {
this.baseFunction = function() {
console.log("Hello from base function");
}
};
//inherit from base
function _ctor() {
this.property1 = "my property value";
};
_ctor.prototype = new _base();
_ctor.prototype.constructor = _ctor;
//get an instance
var instance = new _ctor();
console.log(instance.baseFunction);
funzione definita prototipo:
//base
var _base = function() {};
_base.prototype.baseFunction = function() {
console.log("Hello from base function");
}
//inherit from base
function _ctor() {
this.property1 = "my property value";
};
_ctor.prototype = new _base();
_ctor.prototype.constructor = _ctor;
//get an instance
var instance = new _ctor();
console.log(instance.baseFunction);
possibile duplicato di [I vantaggi di utilizzare prototipi, vs definizione di metodi dritto in costruttore?] (http://stackoverflow.com/questions/4508313/advantages-of-using-prototype-vs-defining-methods-straight-in-the-constructor) –