Class.addMethods - Prototype JavaScript 框架

Xunxin Prototype API

addMethods
1.6.0

addMethods(methods)

增加新的方法到已有的类中。

Class#addMethods 方法应用于通过 Class.create 方法创建的类上。 它可以为类增加一个新的实例方法,或者为已定义的类重写已有的方法。

新加入的方法会在类的继承层次中传播。如果该类具有子类,那么子类将会继承这个新的方法——甚至可以用 $super 调用这个方法。新的方法也会传递到类及其子类的实例中。
译注:关于 $super 关键字,请看这里

样例

var Animal = Class.create({
	initialize: function(name, sound) {
		this.name = name;
		this.sound = sound;
	}, 
	speak: function() {
		alert(this.name + " says: " + this.sound + "!");
	}
}); 
// Animal 的子类
var Snake = Class.create(Animal, {
	initialize: function($super, name) {
		$super(name, 'hissssssssss'); 
	}
}); 
var ringneck = new Snake("Ringneck", "hissssssss");
ringneck.speak(); //-> 提示:"Ringneck says: hissssssss!" 
// 增加 Snake#speak (使用 $super 关键字)
Snake.addMethods({
	speak: function($super) {
		$super();
		alert("You should probably run. He looks really mad.");
	}
});
ringneck.speak(); 
//-> 提示:"Ringneck says: hissssssss!" 
//-> 提示:"You should probably run. He looks really mad." 
// 重定义 Animal#speak 
Animal.addMethods({
	speak: function() {
		alert(this.name + 'snarls: ' + this.sound + '!');
	}
});
ringneck.speak();
//-> 提示:"Ringneck snarls: hissssssss!"
//-> 提示:"You should probably run. He looks really mad."