JavaScript 闭包环境很奇特 - 相当于类与实例的关系?!
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
又一个疑问贴!
不过我相信,问题并不是难在如何解决,最终就是个能解决与不能解决,这很容易!
但当你无法决断是否能否解决,与如何解决的时侯,这才是最让人纠结的事情。谁说不是呢?!
这篇转载,看了三遍了,好像没记住太多,不过有些明白了,闭包的含义,这当然得包括它的习性,要不怎么能算得上了解呢。
下面是一个更有意思的示例 — makeAdder
函数:
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
print(add5(2)); // 7
print(add10(2)); // 12
在这个示例中,我们定义了 makeAdder(x)
函数:带有一个参数 x
并返回一个新的函数。返回的函数带有一个参数 y
,并返回 x
和 y
的和。
是否可以这样理解,闭包中的函数或变量有被外部引用,这个闭包环境就一直存在着,以便其内部类或变量参与运算时,环境还在。
那么再或者,这个闭包是否可以当成是一个类呢?而其实例对象确是个看不到摸不着,确能随其成员的销毁而销毁的后台英雄呢,这就是闭包环境吧,也就是闭包相当于类,闭包环境相当于类的实例,拥有着一份独一无二,不随类存在的成员变量环境。
而且,闭包可以定义的同时执行,那必须在后面加上 (),这就是函数调用的那两个左右括号。
但到目前尚未找到我需要的部分,难道还有其它的执行方式?
时间: 2024-11-03 15:39:35