闭包实现Getter和Setter
我们需要将getter和setter这两个函数放在一个共同的函数中,并在该函数中定义secret变量,这使得两个函数能够共享同一作用域,具体代码如下:1
2
3
4
5
6
7
8
9
10var getValue,setValue;
(function(){
var secret = 0;
getValue = function(){
return secret;
};
setValue = function(v){
secret = v;
};
})();
>>> getValue()
0
>>> setValue(123)
>>> getValue()
123
闭包实现迭代器
下面是一个接受数组输入的初始化函数,我们在其中定义了一个私有指针,该指针会始终指向数组中的下一个元素。1
2
3
4
5
6function setup(x){
var i = 0;
return function() {
return x[i++];
};
}
现在我们只需要一组数据来调用一下setup(),就会创建出我们所需要的next()函数,具体如下:
>>> var next = setup([‘a’,’b’,’c’]);
这是一种既简单又好玩的循环形式:我们只需要重复调用一个函数,就能获取下一个元素。
>>> next();
‘a’
>>> next();
‘b’
>>> next();
‘c’