Javascript设计模式之匿名函数与闭包

简介:

匿名函数

(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,如需转载请自行联系原作者

相关文章
|
22天前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 职责链模式
js设计模式【详解】—— 职责链模式
30 8
|
22天前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 组合模式
js设计模式【详解】—— 组合模式
28 7
|
22天前
|
设计模式 JavaScript Go
js设计模式【详解】—— 状态模式
js设计模式【详解】—— 状态模式
30 7
|
22天前
|
设计模式 JavaScript
js设计模式【详解】—— 桥接模式
js设计模式【详解】—— 桥接模式
30 6
|
22天前
|
设计模式 JavaScript
js设计模式【详解】—— 原型模式
js设计模式【详解】—— 原型模式
23 6
|
22天前
|
设计模式 JavaScript 算法
js设计模式【详解】—— 模板方法模式
js设计模式【详解】—— 模板方法模式
27 6
|
22天前
|
设计模式 存储 JavaScript
js设计模式【详解】—— 享元模式
js设计模式【详解】—— 享元模式
27 6
|
16天前
|
设计模式 JavaScript 前端开发
JavaScript进阶 - JavaScript设计模式
【7月更文挑战第7天】在软件工程中,设计模式是解决常见问题的标准解决方案。JavaScript中的工厂模式用于对象创建,但过度使用可能导致抽象过度和缺乏灵活性。单例模式确保唯一实例,但应注意避免全局状态和过度使用。观察者模式实现了一对多依赖,需警惕性能影响和循环依赖。通过理解模式的优缺点,能提升代码质量。例如,工厂模式通过`createShape`函数动态创建对象;单例模式用闭包保证唯一实例;观察者模式让主题对象通知多个观察者。设计模式的恰当运用能增强代码可维护性。
|
20天前
|
存储 缓存 JavaScript
js 【详解】闭包
js 【详解】闭包
17 0
|
20天前
|
设计模式 缓存 JavaScript
js设计模式实例
【7月更文挑战第2天】JavaScript设计模式包含工厂、单例、建造者、抽象工厂和代理模式等,它们是最佳实践和可重用模板,解决创建、职责分配和通信等问题。例如,工厂模式封装对象创建,单例确保全局唯一实例,建造者模式用于复杂对象构建,抽象工厂创建相关对象集合,而代理模式则控制对象访问。这些模式提升代码质量、可读性和灵活性,是高效开发的关键。
16 0