引用: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
分享到:
相关推荐
本文实例讲述了JS 设计模式之:单例模式定义与实现方法。分享给大家供大家参考,具体如下: ...在日常的开发中,我们遇到的单例模式可能有:Vuex 中的 Store,Vue 的根实例,任何导出单个对象的 ES6 模块等。 字面量
本文实例讲述了JavaScript设计模式之单例模式。分享给大家供大家参考,具体如下: 一、单例模式概念 单例就是保证一个类只有一个实例,实现方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再...
Douglas叫它模块模式(module pattern)。它是如下工作的: 1、创建一个命名空间对象:如果你使用YUI,可以用YAHOO.namespace()方法: YAHOO.namespace(“myProject”);这分配了一个空的myProject对象,是YAHOO的一...
Douglas叫它模块模式(module pattern)。它是如下工作的: 创建一个命名空间对象:如果你使用YUI,可以用YAHOO.namespace()方法: YAHOO.namespace(“myProject”);这分配了一个空的myProject对象,是YAHOO的一个...
JavaScript模块模式 然后,Node.js模块系统允许模块导出任何值,无论是字符串,数字,单个函数还是更复杂的对象。... 使用此模式,您可以创建几种模块模式:单例,基于闭包的类,基于原型的类和外观。
React单例钩子 使用钩子管理 React 应用程序的全局状态。... 使用组件中的单例钩子就像使用上下文一样。 单例钩子是懒惰的。 在某个组件或其他钩子调用钩子之前,不会执行主体。 一旦加载,钩体将永远保持
JavaScript_Patterns 不同JS模式(模块,单例,工厂,观察者,介体)的代码示例
JavaScript手册 目录 模板字符串 数组助手方法 数组方法 推 不变 流行音乐 转移 加入 ...休息和散布算子休息和传播 ...模块和显示模块模式 单例模式 工厂模式 观察者模式 中介者模式 状态模式 Tracalorie
JS_modulePattern_ClassExample_State_of_the_Art :mountain: 用于定向的 JavaScript 示例类,具有私有和公共函数。 编写为模块模式,非单例。 可以直接执行(onload),或者稍后在被另一个语句显式调用时执行。
可以使用构造函数模式、原型模式来实现自定义类型的特权方法,也可以使用模块模式、增强的模块模式来实现单例的特权方法。 JavaScript中的匿名函数和闭包都是非常有用的特性,利用它们可以实现很多功能。不过,因为...
简单的单例模式团队丹尼斯·卡拉赞斯莱昂纳多·派瓦鲁道夫·迪亚斯图利奥·菲利普 它是什么? Development > Organization > Good practices > Standards... SSP 是一种模块化和组织项目的简单方法。 将 OOP 的想法...
JavaScript设计模式 这是《》一书中描述的。 随意进行分叉和更新。 以下DP已实现: 模块模式 观察者模式 单例模式
XSS过滤以及单例模式 博客系统表结构讲解 博客系统功能讲解 CMDB介绍 CMDB实现的三种方式 CMDB Agent客户端示例 第26周 今日内容概要以及CMDB介绍 前端插件定制之表头 前端插件定制之表内容 第27周 前端插件定制...
通过将实例重新导出到类和工厂的导出,将依赖项注入替换为单例反模式。 获取一个纯JavaScript非教义的跨transpiller 框架。 鼓励遵守面向对象设计的最佳实践( , ,,,...)。 提高代码可测试性。 扩展...
Efesto.js Efesto.js 是一个 JavaScript 框架,它为您提供模式、实用程序、路由、dinamyc 加载器、带驱动程序的数据管理器... 设计模式实现,如单例、模块、观察者、工厂……; 文件加载器工具; smarty 模板引擎;
JavaScript 一个合格的中级前端工程师需要掌握的 JavaScript ... 单例模式 promisify函数 优雅处理 async/await JSON.stringify 实现 new koa2中间件原理 koa-compose new promise相关的api的实现(all,race,finall
Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...
5.7.2 单例模式(Singleton Pattern) 81 5.7.3 工厂模式(Factory Pattern) 83 5.8 接口与抽象类 86 5.8.1 接口的定义 86 5.8.2 单一接口的实现 87 5.8.3 多重接口的实现 87 5.8.4 抽象类 88 5.9 小结 90 第6章 ...
从单例模块代码中,您需要五行代码。 第一行是您的标准require语句: var ifdef = require ( 'ifdef' ) 后三个是对现有防护的检查,如有必要,返回防护值。 在这里, GUARD_TERM应该是您模块唯一的术语。 package....
正则表达式编译器 问题 对于像“ colou?r”这样的东西,正则表达式是整洁的。 但是,当您尝试做更严肃的事情时... 如您所见,此模式中有两个“变量”( nnn和nnnn ),并且连字符按字面意义进行了翻译。 其余的x.