---
id: 587d7db2367417b2b2512b8c
title: Use an IIFE to Create a Module
challengeType: 1
videoUrl: ''
localeTitle: 使用IIFE创建模块
---

## Description
<section id="description"> <code>immediately invoked function expression</code> ( <code>IIFE</code> )通常用于将相关功能分组到单个对象或<code>module</code> 。例如,早期的挑战定义了两个mixins: <blockquote> function glideMixin(obj){ <br> obj.glide = function(){ <br> console.log(“在水面上滑行”); <br> }; <br> } <br> function flyMixin(obj){ <br> obj.fly = function(){ <br> console.log(“Flying,wooosh!”); <br> }; <br> } </blockquote>我们可以将这些<code>mixins</code>分组到一个模块中,如下所示: <blockquote>让motionModule =(function(){ <br>返回{ <br> glideMixin:function(obj){ <br> obj.glide = function(){ <br> console.log(“在水面上滑行”); <br> }; <br> }, <br> flyMixin:function(obj){ <br> obj.fly = function(){ <br> console.log(“Flying,wooosh!”); <br> }; <br> } <br> } <br> })(); //两个括号使得函数立即被调用</blockquote>请注意,您有一个<code>immediately invoked function expression</code> ( <code>IIFE</code> ),它返回一个对象<code>motionModule</code> 。此返回对象包含作为对象属性的所有<code>mixin</code>行为。 <code>module</code>模式的优点是可以将所有运动行为打包到单个对象中,然后可以由代码的其他部分使用。以下是使用它的示例: <blockquote> motionModule.glideMixin(鸭); <br> duck.glide(); </blockquote></section>

## Instructions
<section id="instructions">创建一个名为<code>funModule</code>的<code>module</code>来包装两个<code>mixins</code> <code>isCuteMixin</code>和<code>singMixin</code> 。 <code>funModule</code>应该返回一个对象。 </section>

## Tests
<section id='tests'>

```yml
tests:
  - text: 应该定义<code>funModule</code>并返回一个对象。
    testString: assert(typeof funModule === "object");
  - text: <code>funModule.isCuteMixin</code>应该访问一个函数。
    testString: assert(typeof funModule.isCuteMixin === "function");
  - text: <code>funModule.singMixin</code>应该访问一个函数。
    testString: assert(typeof funModule.singMixin === "function");

```

</section>

## Challenge Seed
<section id='challengeSeed'>

<div id='js-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");
  };
};

```

</div>



</section>

## Solution
<section id='solution'>

```js
// solution required
```
</section>