63 lines
2.7 KiB
Markdown
Raw Normal View History

---
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 glideMixinobj{ <br> obj.glide = function{ <br> console.log“在水面上滑行”; <br> }; <br> } <br> function flyMixinobj{ <br> obj.fly = function{ <br> console.log“Flyingwooosh; <br> }; <br> } </blockquote>我们可以将这些<code>mixins</code>分组到一个模块中,如下所示: <blockquote>让motionModule =function{ <br>返回{ <br> glideMixinfunctionobj{ <br> obj.glide = function{ <br> console.log“在水面上滑行”; <br> }; <br> } <br> flyMixinfunctionobj{ <br> obj.fly = function{ <br> console.log“Flyingwooosh; <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>