2.6 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7db2367417b2b2512b8c | Use an IIFE to Create a Module | 1 | 301332 | use-an-iife-to-create-a-module |
--description--
غالباً ما يستخدم immediately invoked function expression (IIFE) لتجميع الــ functionality ذات الصلة في object واحد أو module. فعلى سبيل المثال، كان هناك تحد سابق حدد اثنان mixins:
function glideMixin(obj) {
obj.glide = function() {
console.log("Gliding on the water");
};
}
function flyMixin(obj) {
obj.fly = function() {
console.log("Flying, wooosh!");
};
}
يمكننا تجميع هذه ال mixins في module على النحو التالي:
let motionModule = (function () {
return {
glideMixin: function(obj) {
obj.glide = function() {
console.log("Gliding on the water");
};
},
flyMixin: function(obj) {
obj.fly = function() {
console.log("Flying, wooosh!");
};
}
}
})();
لاحظ أن لديك immediately invoked function expression (IIFE) الذي يرجع كائن motionModule. هذا الـ object المعاد يحتوي على جميع سلوكيات ال mixin كخصائص لل object. ميزة نمط ال module هو أنه يمكن تعبئة جميع سلوكيات الحركة في object واحد يمكن استخدامه بعد ذلك في أجزاء أخرى من الكود الخاص بك. هنا مثال على استخدامه:
motionModule.glideMixin(duck);
duck.glide();
--instructions--
قم بإنشاء module يسمى funModule لتغليف ال mixins الآتيان isCuteMixin و singMixin. funModule يجب أن ترجع object.
--hints--
funModule يجب أن يتم تعريفها وأن تعيد object.
assert(typeof funModule === 'object');
funModule.isCuteMixin يجب أن يصل إلى function.
assert(typeof funModule.isCuteMixin === 'function');
funModule.singMixin يجب أن يصل إلى function.
assert(typeof funModule.singMixin === 'function');
--seed--
--seed-contents--
let isCuteMixin = function(obj) {
obj.isCute = function() {
return true;
};
};
let singMixin = function(obj) {
obj.sing = function() {
console.log("Singing to an awesome tune");
};
};
--solutions--
const funModule = (function () {
return {
isCuteMixin: obj => {
obj.isCute = () => true;
},
singMixin: obj => {
obj.sing = () => console.log("Singing to an awesome tune");
}
};
})();