首页 > 代码库 > 《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.关于正确写一个闭包