经常看到说关于javascript 闭包的问题,感到十分迷惑。 谁能为我真真揭开 javascript 的这个神秘的面纱。javascript 闭包和其它面向对象语言中对象属性的封装,有什么区别!
9 回答

至尊宝的传说
TA贡献1789条经验 获得超10个赞
因为js没有 public private protect
所以才要用用闭包这种手段来实现 其他语言的封装特性
对于你的代码 后者 可以直接取到n、
f1.n
但是前者只能通过方法

森栏
TA贡献1810条经验 获得超5个赞
闭包中
function f1(){
var n = 1;
function f2(){
return n
}
}
与
var f1 = function(){};
f1.prototype = {
n : 1,
f2 : function(){
return this.n;
}
}
这两者 有机区别吗?

慕雪6442864
TA贡献1812条经验 获得超5个赞
一般的编程语言呢?一个函数或者一段过程,它只管输入和输出,至于处理过程它不管的(外面无法访问里面),因为在处理过程中使用过的材料(变量),用它就销毁了。
但是有些编程语言呢?它还关注处理的过程。外面 可以访问里面的变量。

繁华开满天机
TA贡献1816条经验 获得超4个赞
函数内部可以访问到外部变量叫做闭包。全局函数相对全局变量就是个闭包,闭包变量会一直存储于内存。一般来说都是用(function(){})();这种形式封装代码,像一些插件什么的。我三年了理解也不深,表达也表达不是很明白。
添加回答
举报
0/150
提交
取消