Mixin模式

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();

【Mixin模式】以上通过Hero.call(DeMarciaPrince.prototype),在DeMarciaPrince注入了Hero的所有方法和属性。Hero里的方法是每个英雄最基本的方法,所以当我们创建新英雄的时候就可以通过Mixin方式实现代码复用。我们通过闭包实现Hero,避免每次调用的时候都重新定义相同功能的代码。

    推荐阅读