首页 > 代码库 > 《JavaScript设计模式与开发》笔记 5.关于正确写一个闭包
《JavaScript设计模式与开发》笔记 5.关于正确写一个闭包
1.如何正确使用闭包
1.常用闭包
var asd =(function(){var value = http://www.mamicode.com/0 //私有变量放入内存return function(){ //biubiubiu 发射火箭}})();asd();
2.一个引用引发的闭包问题
var asdf = function(){ var value = http://www.mamicode.com/0; return function(){ //火箭升空 }}var f = asdf(); //作为一个函数的引用引发闭包的问题
//这样不是一个闭包
var asdf = function(){ var value = http://www.mamicode.com/0; return function(){ //guang 爆炸了 }}//作为一个函数的引用asdf()();asdf()();asdf()();
3.对象
var asdf = { a :0, call:function(){ this.a++; console.log(this.a); }}asdf.call(); //输出1asdf.call(); //输出2asdf.call(); //输出3
4.注意this指向问题
错误写法:全都变成undefined
var asdf = { a :0, call:function(){ return function(){ this.a++; console.log(this.a); } }}asdf.call()(); //输出1asdf.call()(); //输出2asdf.call()(); //输出3正确写法var asdf = { a :0, call:function(){ that = this; return function(){ that.a++; console.log(that.a); } }}asdf.call()(); //输出1asdf.call()(); //输出2asdf.call()(); //输出3
5.基于事件驱动引发的闭包
for(var i=0;i<arguments.length;i++){ asdf.on某一个事件=function(){ //里面也是一个闭包 }}
《JavaScript设计模式与开发》笔记 5.关于正确写一个闭包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。