immediately invoked function expression ( IIFE )通常用于将相关功能分组到单个对象或module 。例如,早期的挑战定义了两个mixins: function glideMixin(obj){我们可以将这些
obj.glide = function(){
console.log(“在水面上滑行”);
};
}
function flyMixin(obj){
obj.fly = function(){
console.log(“Flying,wooosh!”);
};
}
mixins分组到一个模块中,如下所示: 让motionModule =(function(){请注意,您有一个
返回{
glideMixin:function(obj){
obj.glide = function(){
console.log(“在水面上滑行”);
};
},
flyMixin:function(obj){
obj.fly = function(){
console.log(“Flying,wooosh!”);
};
}
}
})(); //两个括号使得函数立即被调用
immediately invoked function expression ( IIFE ),它返回一个对象motionModule 。此返回对象包含作为对象属性的所有mixin行为。 module模式的优点是可以将所有运动行为打包到单个对象中,然后可以由代码的其他部分使用。以下是使用它的示例: motionModule.glideMixin(鸭);
duck.glide();
funModule的module来包装两个mixins isCuteMixin和singMixin 。 funModule应该返回一个对象。 funModule并返回一个对象。
testString: 'assert(typeof funModule === "object", "funModule should be defined and return an object.");'
- text: funModule.isCuteMixin应该访问一个函数。
testString: 'assert(typeof funModule.isCuteMixin === "function", "funModule.isCuteMixin should access a function.");'
- text: funModule.singMixin应该访问一个函数。
testString: 'assert(typeof funModule.singMixin === "function", "funModule.singMixin should access a function.");'
```