《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设计模式与开发实践---读书笔记 策略模式
《JavaScript设计模式与开发》笔记 1.面向对象的JavaScript