addMethods1.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."