Zważywszy na proste dziedziczenie JS, jaka jest praktyczna różnica w funkcji podstawowej między tymi dwoma przykładami? Innymi słowy, kiedy dana osoba powinna wybrać funkcję na "tym" zamiast na prototypie (lub na odwrót)?Czym różni się funkcja this.function i prototype.function?
Dla mnie drugi przykład jest łatwiejszy do strawienia, ale o ile więcej jest do tego?
funkcja zdefiniowana w ten sposób:
//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);
funkcja określona na prototypie:
//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);
możliwe duplikat [Zalety stosowania prototypu vs określenie metody prosto w konstruktor?] (http://stackoverflow.com/questions/4508313/advantages-of-using-prototype-vs-definining-methods-straight-in-the-constructor) –