immediately invoked function expression
( IIFE
) se usa a menudo para agrupar la funcionalidad relacionada en un solo objeto o module
. Por ejemplo, un desafío anterior definió dos mixins:
function glideMixin(obj) {Podemos agrupar estos
obj.glide = function() {
console.log("Gliding on the water");
};
}
function flyMixin(obj) {
obj.fly = function() {
console.log("Flying, wooosh!");
};
}
mixins
en un módulo de la siguiente manera:
let motionModule = (function () {Tenga en cuenta que tiene una
return {
glideMixin: function (obj) {
obj.glide = function() {
console.log("Gliding on the water");
};
},
flyMixin: function(obj) {
obj.fly = function() {
console.log("Flying, wooosh!");
};
}
}
}) (); // The two parentheses cause the function to be immediately invoked
immediately invoked function expression
( IIFE
) que devuelve un objeto motionModule
. Este objeto devuelto contiene todos los comportamientos de mixin
como propiedades del objeto.
La ventaja del patrón del module
es que todos los comportamientos de movimiento se pueden empaquetar en un solo objeto que luego pueden ser utilizados por otras partes de su código. Aquí hay un ejemplo usándolo:
motionModule.glideMixin(duck);
duck.glide();
module
llamado funModule
para envolver los dos mixins
isCuteMixin
y singMixin
. funModule
debería devolver un objeto.
funModule
debe definirse y devolver un objeto.
testString: 'assert(typeof funModule === "object", "funModule
should be defined and return an object.");'
- text: funModule.isCuteMixin
debe acceder a una función.
testString: 'assert(typeof funModule.isCuteMixin === "function", "funModule.isCuteMixin
should access a function.");'
- text: funModule.singMixin
debe acceder a una función.
testString: 'assert(typeof funModule.singMixin === "function", "funModule.singMixin
should access a function.");'
```