那么,你应该使用,因为代码重用和继承原型。
基本上,如果您将方法绑定到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 –