3.5 KiB
3.5 KiB
id, title, challengeType, forumTopicId, localeTitle
| id | title | challengeType | forumTopicId | localeTitle |
|---|---|---|---|---|
| 587d7db2367417b2b2512b8c | Use an IIFE to Create a Module | 1 | 301332 | Использование модуля IIFE для создания модуля |
Description
IIFE immediately invoked function expression ( IIFE ) часто используется для группировки связанных функций в один объект или module . Например, более ранняя задача определила два микшина: функция glideMixin (obj) {Мы можем сгруппировать эти
obj.glide = function () {
console.log («Скольжение по воде»);
};
}
функция flyMixin (obj) {
obj.fly = function () {
console.log («Flying, wooosh!»);
};
}
mixins в модуль следующим образом: let 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 ();
Instructions
module с именем funModule , чтобы обернуть два mixins isCuteMixin и singMixin . funModule должен возвращать объект.
Tests
tests:
- text: <code>funModule</code> should be defined and return an object.
testString: assert(typeof funModule === "object");
- text: <code>funModule.isCuteMixin</code> should access a function.
testString: assert(typeof funModule.isCuteMixin === "function");
- text: <code>funModule.singMixin</code> should access a function.
testString: assert(typeof funModule.singMixin === "function");
Challenge Seed
let isCuteMixin = function(obj) {
obj.isCute = function() {
return true;
};
};
let singMixin = function(obj) {
obj.sing = function() {
console.log("Singing to an awesome tune");
};
};
Solution
const funModule = (function () {
return {
isCuteMixin: obj => {
obj.isCute = () => true;
},
singMixin: obj => {
obj.sing = () => console.log("Singing to an awesome tune");
}
};
})();