那麼,你應該使用,因爲代碼重用和繼承原型。
基本上,如果您將方法綁定到this
關鍵字,那麼您只是將該方法提供給該特定實例,而在原型中,則爲該類的所有實例編寫該方法。
例如:
function Person(name) {
this.name = name;
this.toString = function() {
return this.name;
}
}
var bob = new Person('Bob');
var jim = new Person('Jim');
jim.toString = function() {
return "I have amnesia, I forgot my name!";
};
現在,雖然bob
和jim
都是人(同一類的實例),他們的行爲不同,因爲他們有自己的一套規則(方法),他們依靠。
如果你使用的原型:
function Person(name) {
this.setName(name);
}
Person.prototype = {
name : 'default name',
setName : function(name) {
this.name = name;
},
toString : function() {
return this.name;
}
};
var bob = new Person('Bob');
var jim = new Person('Jim');
Person.prototype.toString = function() {
return "I have amnesia, I forgot my name!";
};
現在,所有的人的行爲相同。
使用原型繼承有利於代碼重用,並且不會將不必要的重複內容加載到內存中。 +更新類這種方式更簡單。
此外 - http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript –