《JavaScript设计模式与开发》笔记 5.关于正确写一个闭包

Posted SmarTom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《JavaScript设计模式与开发》笔记 5.关于正确写一个闭包相关的知识,希望对你有一定的参考价值。

1.如何正确使用闭包

1.常用闭包

var asd =(function(){
var value = 0    //私有变量放入内存
return function(){
   //biubiubiu 发射火箭
}
})();
asd();

 

2.一个引用引发的闭包问题

var asdf = function(){
    var value = 0;
    return function(){
        //火箭升空
    }
}
var f = asdf(); //作为一个函数的引用引发闭包的问题

 


//这样不是一个闭包

var asdf = function(){
    var value = 0;
    return function(){
        //guang  爆炸了
    }
}
//作为一个函数的引用
asdf()();
asdf()();
asdf()();

 

3.对象

var asdf = {
    a :0,
    call:function(){
        this.a++;
        console.log(this.a);
    }
}
asdf.call();   //输出1
asdf.call();   //输出2
asdf.call();   //输出3

 

4.注意this指向问题

错误写法:全都变成undefined

var asdf = {
    a :0,
    call:function(){
        return function(){
            this.a++;
            console.log(this.a);
        }
    }
}
asdf.call()();   //输出1
asdf.call()();   //输出2
asdf.call()();   //输出3
正确写法

var asdf = {
    a :0,
    call:function(){
        that = this;
        return function(){
            that.a++;
            console.log(that.a);
        }
    }
}
asdf.call()();   //输出1
asdf.call()();   //输出2
asdf.call()();   //输出3

 

5.基于事件驱动引发的闭包

for(var i=0;i<arguments.length;i++){
    asdf.on某一个事件=function(){
            //里面也是一个闭包        
    }
}

 

以上是关于《JavaScript设计模式与开发》笔记 5.关于正确写一个闭包的主要内容,如果未能解决你的问题,请参考以下文章

《JavaScript设计模式与开发》笔记 6.高阶函数

JavaScript设计模式与开发实践---读书笔记 策略模式

《JavaScript设计模式与开发》笔记 1.面向对象的JavaScript

JavaScript设计模式与开发实践---读书笔记

JavaScript设计模式与开发实践---读书笔记 迭代器模式

javascript设计模式与开发实践 阅读笔记