码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-09 11:00:43      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:lock   驱动   define   block   设计   开发   cal   javascrip   var   

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.关于正确写一个闭包

标签:lock   驱动   define   block   设计   开发   cal   javascrip   var   

原文地址:http://www.cnblogs.com/subtract/p/7139883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!