--- id: 587d7db2367417b2b2512b8c title: Use an IIFE to Create a Module challengeType: 1 videoUrl: '' localeTitle: استخدم IIFE لإنشاء وحدة نمطية --- ## Description
غالبا ما يتم استخدام immediately invoked function expression IIFE immediately invoked function expression ( IIFE ) لتجميع الوظائف ذات الصلة في كائن واحد أو module واحدة. على سبيل المثال ، حدد تحدٍ سابق اثنين من المزيج:
وظيفة glideMixin (obj) {
obj.glide = function () {
console.log ("الانزلاق على الماء") ؛

}
وظيفة flyMixin (obj) {
obj.fly = function () {
console.log ("الطائر ، wooosh!") ؛

}
يمكننا تجميع هذه mixins في وحدة نمطية على النحو التالي:
let motionModule = (function () {
إرجاع {
glideMixin: function (obj) {
obj.glide = function () {
console.log ("الانزلاق على الماء") ؛


flyMixin: وظيفة (obj) {
obj.fly = function () {
console.log ("الطائر ، wooosh!") ؛

}
}
}) ()؛ // يتسبب هذان القوسان في استدعاء الدالة على الفور
لاحظ أن لديك immediately invoked function expression ( IIFE ) تقوم بإرجاع كائن motionModule . يحتوي هذا الكائن الذي تم إرجاعه على كافة سلوكيات mixin كخصائص للكائن. وتتمثل ميزة نمط module في إمكانية تجميع كل سلوكيات الحركة في كائن واحد يمكن استخدامه بعد ذلك بواسطة أجزاء أخرى من شفرتك. هنا مثال على ذلك استخدامه:
motionModule.glideMixin (بطة)؛
duck.glide ()؛
## Instructions
إنشاء module اسمه funModule التفاف اثنين من mixins isCuteMixin و singMixin . يجب أن ترجع funModule كائن.
## Tests
```yml tests: - text: يجب تعريف 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.");' ```
## Challenge Seed
```js let isCuteMixin = function(obj) { obj.isCute = function() { return true; }; }; let singMixin = function(obj) { obj.sing = function() { console.log("Singing to an awesome tune"); }; }; ```
## Solution
```js // solution required ```