# 全面解析Module模式 复习
***
## 基本用法##
``` javascript
var Calculator = function (eq) {
//这里可以声明私有成员
var eqCtl = document.getElementById(eq);
return {
// 暴露公开的成员
add: function (x, y) {
var val = x + y;
eqCtl.innerHTML = val;
}
};
};
```
每次调用的时候new一下,**不过这样每个实例都独立存在于内存中**。
``` javascript
var calculator = new Calculator(‘eq‘);
calculator.add(2, 2);
```
***
###1、匿名闭包###
```javascript
(function () {
// ... 所有的变量和function都在这里声明,并且作用域也只能在这个匿名闭包里
// ...但是这里的代码依然可以访问外部全局的对象
}());
```
之前说过()内的function属于函数表达式,可以执行。
###2、全局变量在模块中的使用
* 全局变量传入模块中
全局变量可以作为参数传入匿名函数中
```javascript
function ($, YAHOO) {
// 这里,我们的代码就可以使用全局的jQuery对象了,YAHOO也是一样
} (jQuery, YAHOO));
```
* 模块中声明全局变量
```javascript
var blogModule = (function () {
var my = {}, privateName = "博客园";
function privateAddTopic(data) {
// 这里是内部处理代码
}
my.Name = privateName;
my.AddTopic = function (data) {
privateAddTopic(data);
};
return my;
} ());
```
***
感谢@汤姆大叔 的《深入理解JavaScript系列》指导我学习!
全面解析Module模式 复习
基本用法
var Calculator = function (eq) {
//这里可以声明私有成员
var eqCtl = document.getElementById(eq);
return {
// 暴露公开的成员
add: function (x, y) {
var val = x + y;
eqCtl.innerHTML = val;
}
};
};
每次调用的时候new一下,不过这样每个实例都独立存在于内存中。
var calculator = new Calculator(‘eq‘);
calculator.add(2, 2);
1、匿名闭包
(function () {
// ... 所有的变量和function都在这里声明,并且作用域也只能在这个匿名闭包里
// ...但是这里的代码依然可以访问外部全局的对象
}());
之前说过()内的function属于函数表达式,可以执行。
2、全局变量在模块中的使用
- 全局变量传入模块中
全局变量可以作为参数传入匿名函数中
function ($, YAHOO) {
// 这里,我们的代码就可以使用全局的jQuery对象了,YAHOO也是一样
} (jQuery, YAHOO));
var blogModule = (function () {
var my = {}, privateName = "博客园";
function privateAddTopic(data) {
// 这里是内部处理代码
}
my.Name = privateName;
my.AddTopic = function (data) {
privateAddTopic(data);
};
return my;
} ());
感谢@汤姆大叔 的《深入理解JavaScript系列》指导我学习!
复习JavaScript 4