js掺元类的实现
掺元是个奇特的方法,与平时遇到的继承有点不同。在C++和Python这类语言中允许子类继承多个父类。我们也可以把掺元类式看成是多亲继承。
顾名思义,掺元就是往类中添加额外的成员加以扩充。
我们这样定义父类
var Person = function(){
this.name = 'default name';
}
Person.prototype = {
getName : function(){
return this.name;
}
}
掺元类,输出类的所有成员
var Mixin = function(){};
Mixin.prototype = {
serialize : function(){
var output = [];
for(key in this){
output.push(key + " : " + this[key]);
}
return output.join(',');
}
}
接下来弄个函数实现他们的继承关系
function augment(reciveClass, giveClass){
for(method in giveClass.prototype){
if(!reciveClass.prototype[method]){
reciveClass.prototype[method] = giveClass.prototype[method];
}
}
}
augment(Person, Mixin); var p = new Person(); alert(p.serialize());
这样子Person就有了serialize 方法了。
掺元类更适合用一些方法扩充一个类,类式与多亲继承。不过这种方案适用的场合不多,只有那些彼此大不相同的各种类中都派上用场的方法才适合共享。

浙公网安备 33010602011771号