首页 > 代码库 > 闭包小小结
闭包小小结
闭包有很多的解释,有的是这么认为的:如果在函数func内部声明函数inner,然后在函数外部调用inner,这个过程即产生了一个闭包。还有些是这么认为的:闭包是一种使函数能够读取其它函数的局部变量的语法机制。 我比较喜欢第二种,就是这个函数它能够访问其他函数的局部变量。
闭包的用途:一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
作者: 妙笔
链接:http://www.imooc.com/article/8413
来源:慕课网
作者: 妙笔
链接:http://www.imooc.com/article/8413
来源:慕课网
一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
作者: 妙笔
链接:http://www.imooc.com/article/8413
来源:慕课网
作者: 妙笔
链接:http://www.imooc.com/article/8413
来源:慕课网
function Current(start){ count = start; return{ on: function(){ count++; }, off: function(){ return count; } }}var foo = Current(4);foo.on();foo.off();console.log(foo.off());
这里,Counter
函数返回两个闭包,函数 on
和函数 off
。 这两个函数都维持着 对外部作用域 Counter
的引用,因此总可以访问此作用域内定义的变量 count
.
闭包应用举例,模拟类的私有属性,利用闭包的性质,局部变量只有在sayAge方法中才可以访问,而name在外部也访问,从而实现了类的私有属性。
function User(){ this.name = "Vicfeel"; //共有属性 var age = 23; //私有属性 this.sayAge:function(){ console.log("my age is " + age); } } var user = new User(); console.log(user.name); //"Vicfeel" console.log(user.age); //"undefined" user.sayAge(); //"my age is 23"
嗯,差不多我的记录就是这样子了。
闭包小小结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。