Mixin 有助于减少系统中的重复功能及增加函数复用。Mixin通过将功能注入到对象原型中轻松实现功能共享,但这也导致了原型污染和函数起源方面的不确定性。下面看一个简单Minxin模式的例子:
var Hero = (function () {
this.forward = function () {
console.log('前进: 1米');
};
this.backward = function () {
console.log('后退: 1');
};
this.attack = function () {
console.log('普通攻击');
}
return function() {
this.forward = forward;
this.backward = backward;
this.attack = attack;
return this;
}
})();
var DeMarciaPrince = function (name) {
this.name = name;
Hero.call(DeMarciaPrince.prototype);
}
var deMarciaPrince = new DeMarciaPrince('嘉文四世');
console.log(deMarciaPrince.name)
deMarciaPrince.forward();
deMarciaPrince.attack();
以上通过Hero.call(DeMarciaPrince.prototype),在DeMarciaPrince注入了Hero的所有方法和属性。Hero里的方法是每个英雄最基本的方法,所以当我们创建新英雄的时候就可以通过Mixin方式实现代码复用。我们通过闭包实现Hero,避免每次调用的时候都重新定义相同功能的代码。
网友评论