javascript 闭包和其它面向对象语言中对象属性的封装,有什么区别

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

鸿蒙传说
浏览 634回答 9
9回答

至尊宝的传说

因为js没有 public private protect 所以才要用用闭包这种手段来实现 其他语言的封装特性   对于你的代码 后者 可以直接取到n、 f1.n 但是前者只能通过方法 

森栏

闭包中   function f1(){   var n = 1;   function f2(){     return n   } } 与 var f1 = function(){}; f1.prototype = {   n : 1,   f2 : function(){     return this.n;   } }这两者 有机区别吗?

慕容森

@小码蚁·兴:初学者不用整天考虑这些问题。当你经历丰富了,这些自然就懂了

冉冉说

哦,好吧,我还是先学习this 是什么东西,再出来吧!

慕莱坞森

@小码蚁·兴: 有区别的,前者是无法改变n的值的,后者却可以通过f1.protorype.n = 2来修改值,这就是很大的区别了。

慕雪6442864

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

繁华开满天机

函数内部可以访问到外部变量叫做闭包。全局函数相对全局变量就是个闭包,闭包变量会一直存储于内存。一般来说都是用(function(){})();这种形式封装代码,像一些插件什么的。我三年了理解也不深,表达也表达不是很明白。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript