fum*_*huu 12 javascript closures programming-languages
我对闭包的理解是它们本质上是一个函数,它使用一个你认为超出范围的变量.我想这是我前几天看到的一个例子:
function closureMaker(somearg)
{
var local_value = 7;
function funcToReturn(arg1, arg2)
{
return local_value + somearg + arg1 + arg2;
}
return funcToReturn;
}
var myClosure = closureMaker(6); //make the closure
myClosure(2, 3); //using it
Run Code Online (Sandbox Code Playgroud)
现在闭包有local_value甚至是原始的arg,somearg.但我不明白为什么这些都有帮助.使用'free'变量local_value有什么意义,甚至更不为我所知,为什么你会在闭包函数中使用closureMaking函数的参数?
我对如何在javascript中使用它更感兴趣,这是否用于AJAX请求和对象?
我得到了什么.我需要为什么.
闭包最实用和最广泛使用的一种方法是实现私有或特权成员,例如:
function Test (param) {
var secret = 3;
function privateMethod() {
//...
}
this.publicMember = param;
this.privilegedMember = function () {
return secret * param;
};
}
var foo = new Test(10);
foo.privilegedMember(); // 30
foo.secret; // undefined
Run Code Online (Sandbox Code Playgroud)
该模块模式也可以使用相同的原理,如一个很好的例子:
var myModule = (function () {
var obj = {}, privateVariable = 1;
function privateMethod() {
// ...
}
obj.publicProperty = 1;
obj.publicMethod = function () {
// private members available here...
};
return obj;
}());
Run Code Online (Sandbox Code Playgroud)
这可能不是您想要的,但是有一篇关于 Java 闭包(它们应该/可以如何实现)的精彩讨论,其中还介绍了一些关于您想要在哪里使用它们的示例
http://www.youtube.com/watch?v=0zVizaCOhME
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |