javascript设计模式_第二部分_单体模式
单体模式
优点:把代码组织得一致并隔离,更容易阅读和维护,提高稳定性;用于优化,提升性能
缺点:可导致强耦合
5.1 单体的基本结构
var Singleton = {
attribute1 : true,
attribute2 : 10,
method1 : function(){},
method2 : function(){}
};
严格按定义来说,C1不是一个单体,因为它不是一个可实例化的类
对象字面量只是创意单体的方式之一.
并非所有的对象字面量都是单体,只用来模仿关联数组及容纳数据的就不是单体.
5.2 划分命名空间
var MyNamespace = {}
MyNamespace.common = {};
5.3 用作特定网页专用代码的包装器的单体
GiantCorp.RegPage = {
FORM_ID : 'reg-form',
//method
handSubmit : function(e){
e.preventDefault();
//...
GiantCorp.RegPage.sendRegistration();
},
init : function(){
GiantCorp.RegPage.formEl = $(GiantCorp.RegPage.FORM_ID);
addEvent(GiantCorp.RegPage.formEl,'submit',GiantCorp.RegPage.handSubmit);
}
};
addLoadEvent(GiantCorp.RegPage.init);
//以上代码将属性及方法都统一到一个单体中,并通过init来绑定事件,最后在页面上调用init即可实现特定页面的使用
某网页专用代码,最好馐在自己的单体对象中
5.4 拥有私用成员的单体
1) 下划线表示法
GiantCorp.DataParser = {
//Private methods
_stripWhitespace : function(str){
return str.replace(/\s+/,'');
},
_stringSplit : function(str,delimiter){
return str.split(delimiter);
},
//Public method
stringToArray : function(str, delimiter,stripWS){
if(stripWS){
str = this._stripWhitespace(str);
}
var outputArray = this._stringSplit(str,delemiter);
return outputArray;
}
}
2) 使用闭包
MyNamespace.Singleton = (function(){
return {};
})();
这种方式与直接使用对象字面量没什么区别,但这个包装函数创建了一个可以用来添加私用成员的闭包,任何添加在这个匿名函数中而不在对象字面量中的都将成为私有成员
MyNamespace.Singleton = (function(){
//Private members
var p1 = false;
var p2 = 10;
function p3(){}
return {
//Public members
pub1 : true,
pub2 : 10,
pub3 : functi
相关文档:
这一章我们将会重点介绍JavaScript中几个重要的属性(this、constructor、prototype), 这些属性对于我们理解如何实现JavaScript中的类和继承起着至关重要的作用。
this
this表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什 ......
在第一章中,我们使用构造函数和原型的方式在JavaScript的世界中实现了类和继承, 但是存在很多问题。这一章我们将会逐一分析这些问题,并给出解决方案。
注:本章中的jClass的实现参考了Simple JavaScript Inheritance
的做法。
首先让我们来回顾一下第一章中介绍的例子:
function Person(name) {
this.name = nam ......
POST代替FORM
<SCRIPT language="VBScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) ......
0.链接css文件和js文件
<link rel="stylesheet" href="../css/style.css" mce_href="css/style.css" type="text/css">
<mce:script language="javascript" src="../includes/jslib.js" mce_src="includes/jslib.js" ></mce:script>
1.关闭输入法
<input style="ime-mode ......