我正在学习 Javascript 中的原型。我不太明白的一件事是为什么我应该使用CONSTRUCTOR_FN.prototype.METHOD_NAME
约定添加一个函数,而不仅仅是this.METHOD_NAME
在CONSTRUCTOR
?
我写了这个小代码来澄清:
function Cat ( name ) {
this._name = name;
this.say = function ( thing ) {
alert( this._name + " says: '" + thing + "'" );
}
}
function Dog ( name ) {
this._name = name;
}
Dog.prototype.say = function ( thing ) {
alert( this._name + " says: '" + thing + "'" );
}
var c = new Cat( "Mitt");
var d = new Dog( "Barak" );
c.say( "War" );
d.say( "No war" );
据我所见,构造函数Cat
和Dog
构造函数的工作方式相同。如果我从这个问题中理解正确,唯一的区别是当你向原型添加一些东西时,来自该构造函数的所有对象都会拥有它。还有其他原因吗?