Javascript设计模式之匿名函数与闭包
程序员文章站
2022-04-05 11:11:00
...
匿名函数
(function () {
var foo = 10;
var bar = 2;
console.log(foo*bar);
})(); // 20
带参数的匿名函数
(function (foo,bar) {
console.log(foo*bar);
})(10,2); // 20
var baz = (function (foo,bar) {
return foo * bar;
})(10,2);
console.log(baz); // 20
闭包,closure 闭包,闭包就是能够读取其他函数内部变量的函数
var baz;
(function () {
var foo = 10;
var bar = 2;
baz = function () {
return foo * bar;
}
})();
console.log(baz()); // 20
闭包代码块
能理解下面的几个代码块,就算能理解闭包了。闭包可以读取其他函数内部变量。
var that = this;
就是精髓。
// 代码块一
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name; // this是匿名函数
};
}
};
console.log(object.getNameFunc()()); // undefined
console.log(object.getNameFunc().call(object)); // My Object
// 代码块二
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){ // 闭包
return that.name;
};
}
};
console.log(object.getNameFunc()()); // My Object
// 代码块三
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return name;
};
}
};
console.log(object.getNameFunc()()); // The Window
// 代码块四
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return this.name; // this是object
}
};
console.log(object.getNameFunc()); // My Object
方法论总结:可以针对关键点,进行深入探讨。百度搜索相关的博文或百科探索。
本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6197068.html,如需转载请自行联系原作者
上一篇: js创建函数3种方式
下一篇: 现在重新开始学算法还来得及吗?
推荐阅读
-
JavaScript设计模式之单例模式原理与用法实例分析
-
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
-
JavaScript设计模式之原型模式分析【ES5与ES6】
-
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
-
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
-
javascript设计模式之对象工厂函数与构造函数详解
-
JavaScript设计模式之模板方法模式原理与用法示例
-
JavaScript设计模式之缓存代理模式原理与简单用法示例
-
JavaScript设计模式之构造函数模式实例教程
-
JavaScript匿名函数和闭包