引用:http://www.iteye.com/topic/1112939
引自:http://www.cnblogs.com/fengmiaosen/archive/2011/01/11/1933219.html
在javascript中,单例(singleton)就是指只有一个实例的对象,而不需要用new关键字去创建一个对象示例。单例其实有点类似于C# /C++里面的静态类。在javascript中,是以对象字面量的方式来创建单例对象的,也就是以花括号包裹起来的键值对的JSON形式来创建的。例如:
var singletonObj={
name:'John',
method:function(){
//方法代码
}
};
模块模式则是用来为单例创建私有变量和特权方法(公有方法),从而能增强单例的可访问性。以模块模式定义的私有变量和私有函数只有单例对象本身的特权(公有)方法可以访问到,其他外部的任何对象都不可以。其语法形式如下:
var singleton = function(){
//私有变量
var privateVariable = 10;
//私有函数
function privateFunction(){
return false;
}
//返回对象
return {
//公有属性
publicProperty: true,
//公有属性和公有方法
publicMethod : function(){
privateVariable++;
return privateFunction();
}
};
}();
上面的代码中,我们创建了一个匿名函数并赋值给变量singleton,然后立即调用这个函数返回可以公开的公有方法和属性的对象实例。在匿名函数内部,首先定义了私有变量和私有函数,然后将一个对象实例作为函数值返回,这样返回的对象中只包含可以公开的属性和方法。因为这个返回的对象在匿名函数内部定义,因此它内部的公有方法和属性都可以访问私有变量和函数。这种模式适合需要对单例进行一些初始化,又需要维护私有变量时。
单例对象中公有属性和公有方法的调用与一般对象的属性和方法调用一样,使用点表示法或者方括号语法来调用单例对象的公有成员。例如:
alert(singleton.publicProperty);
alert(singleton[publicProperty]);
执行结果都是:true
分享到:
相关推荐
在JavaScript中实现单例模式的基础理论主要包括对象字面量形式和模块模式。对象字面量是最简单的单例模式实现方式,它的所有属性和方法都是公开的。这种方式实现的单例,任何外部代码都可以直接访问它的成员,包括...
在JavaScript中,由于其动态特性和全局作用域,实现单例模式相对简单,但同样需要注意防止不必要的资源浪费和全局变量污染。 面向对象编程(OOP)是软件开发中的一个重要概念,它通过模拟现实世界中的对象来组织...
单例模式是设计模式中较为常见的一种模式,它确保一个类只有一个实例,并提供一个全局访问点。在JavaScript中实现单例模式同样非常重要,尤其是在需要控制资源消耗或者共享单一实例状态的情况下。 #### 二、基本...
- 模块模式:通过闭包创建私有变量和方法,同时提供公共接口。 - 函数组合模式:将多个函数组合起来,形成新的功能。 2. **JavaScript模式**: JavaScript模式不仅包括设计模式,还包括编码风格和最佳实践。例如...
例如,JavaScript中的模块化可以看作是单例模式的一种实现,确保特定模块在整个应用程序中只加载一次。 总结来说,"经典工厂单例模式典范"是一个将工厂模式和单例模式相结合的经典实例,它在Java、Web和.NET开发中...
在了解javascript单例模式的简单实现方法之前,我们首先要弄清楚什么是单例模式。单例模式(Singleton Pattern)是一种设计模式,它规定了一个类只能创建一个实例,并提供一个全局访问点供外部获取该实例。这样的...
单例模式是软件设计模式中的一种,它的主要思想是确保一个类只有一个实例,并提供一个全局访问点。在软件工程中,这种模式常用于控制资源的共享,比如数据库连接、线程池或者配置对象等,因为这些对象创建和销毁的...
5. 发布/订阅模式:这是观察者模式的变体,在此模式中,发布者和订阅者之间不会直接相互调用,而是通过一个中间层进行通信。在前端开发中,这可以用来解耦模块之间的直接依赖关系。 6. 适配器模式:适配器模式允许...
书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...
**模块模式**是JavaScript中解决命名冲突和封装的一种策略。通过闭包,模块模式可以隐藏内部状态,同时暴露公共接口。书中还讲解了如何结合模块模式与立即执行函数表达式(IIFE)来创建独立的执行环境。 **装饰器...
5. **模块模式(Module)**:JavaScript中,可以利用闭包来创建私有作用域,保护内部变量和方法,只暴露必要的接口。这有助于代码组织和防止命名冲突。 6. **策略模式(Strategy)**:定义了一系列的算法,并将每个...
模块模式是JavaScript中实现封装和私有变量的一种方式。通过立即执行函数表达式(IIFE)和闭包,可以在全局作用域中创建独立的命名空间,防止变量污染。 六、观察者模式 观察者模式是一种行为设计模式,它定义了...
闭包的常见用法包括工厂函数和模块模式等,这些都是实现封装和避免全局作用域污染的有效方式。然而,闭包的过度使用可能会导致内存泄漏,因为它会使得函数内部使用的变量无法被垃圾回收机制清除。因此,在使用闭包时...
在JavaScript中,单例模式还可以结合闭包、模块化工具(如CommonJS、ES6模块)或者`window`对象来实现。闭包可以防止外部直接访问构造函数,模块化工具可以封装实例化过程,`window`对象则可以提供全局访问点。 ...
在单例模式中,由于只需要创建一次,所以这通常是可接受的。 ### 四、单例模式的实现 在JavaScript中,单例模式通常通过立即执行函数表达式(IIFE)来实现。以下是一个简单的示例: ```javascript var Singleton ...
本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: ...在日常的开发中,我们遇到的单例模式可能有:Vuex 中的 Store,Vue 的根实例,任何导出单个对象的 ES6 模块等。 字面量
"函数式编程"也是JavaScript设计模式中的一个重要概念,它鼓励使用无副作用的纯函数和高阶函数,减少代码耦合,提高可读性和可测试性。"柯里化"和"偏函数"是函数式编程中的两种技术,它们可以提升函数的灵活性和重用...
总的来说,原生JavaScript单例模式通过封装和闭包等技术手段,为应用提供了一个高效、可维护的实例管理机制。通过遵循开闭原则和单一职责原则,单例模式可以使得JavaScript代码在保证扩展性的同时,也易于维护和升级...
这部分可能介绍了一些常见的对象创建模式,如工厂函数、构造函数模式、模块模式、单例模式等。这些模式有助于在不同的场景下创建和管理对象实例,提高代码的组织性和可扩展性。 六、代码复用模式 代码复用是软件...