Angesichts einfacher JS-Vererbung, was ist der praktische Unterschied in der Basisfunktion zwischen diesen beiden Beispielen? Mit anderen Worten, wann sollte eine Person entscheiden, eine Funktion auf "diesem" statt auf dem Prototyp (oder umgekehrt) zu definieren?Was ist der Unterschied zwischen this.function und protot.function?
Für mich ist das zweite Beispiel leichter zu verdauen, aber wie viel mehr gibt es dazu?
Funktion folgt definiert:
//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);
Funktion Prototyp definiert:
//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);
möglich Duplikat [Vorteile von Prototypen unter Verwendung vs definieren Methoden direkt in der Konstruktor?] (http://stackoverflow.com/questions/4508313/Advantages-of-using-prototype-vs-defining-methods-stra-ight-in-the-constructor) –