javascrip 模块模式(Module Pattern)

原文来自:http://yuiblog.com/
在JavaScript中,全局变量可以说是一个魔鬼吧!在Ext中我们可以看见之定义了几个全局变量,在Ext中每一个变量属于
某一个对象的成员,所以我希望在写你自己的代码是也征询这个定律!。即使在不使用Ext,我在项目不会使用ext,现在写
代码习惯这种方式来了,看起来更爽!更OO!
1:创建命名空间对象
  Ext.namespace("Ext.myProject");

  如果你不引入Ext,可以不需要这一步!

2:创建一个带有返回值的匿名函数给命名空间对象
引用
  Ext.myProject.myModule = function () {
return  {
myPublicProperty: "I'm accessible as Ext.myProject.myModule.myPublicProperty.";
myPublicMethod: function () {
YAHOO.log("I'm accessible as Ext.myProject.myModule.myPublicMethod.");
}
};

}();

3: 添加private变量或方法到return语句前面
	Ext.myProject.myModule = function () {
		//"private" variables:
		var myPrivateVar = "I can be accessed only from within Ext.myProject.myModule.";
		//"private" method:
		var myPrivateMethod = function () {
			....
		}
		return  {
			myPublicProperty: "I'm accessible as Ext.myProject.myModule.myPublicProperty."
			myPublicMethod: function () {
				myPrivateVar;
				myPrivateMethod();
				this.myPublicProperty;
			}
		};
	
	}();


private变量或方法只能在函数内部访问或者从返回对象的成员里。在函数内部访问public方法或变量,之要在前面
加上《this.》 也可以直接加上路径。在外部访问之能是后一种如:Ext.myProject.myModule.myPublicMethod()

一下是我在实际工作中的一段代码:
var SEL = function(){
	return {
		/*
		 * 业务区
		 */
		areaData : function() {
			this._getAjaxData('../../ext/SelectAjaxAction.do?method=getAreaData','&id=areacode&');
		},
		/*
		 * 营业区
		 */
		bussData : function() {
			//this._deleteOption(["planunit","bussplace"]);
			this._getAjaxData('../../ext/SelectAjaxAction.do?method=getBussData','&id=busscode&');
		},
		/*
		 * 营销单位
		 */
		'planUnit' : function() {
			//this._deleteOption(["bussplace"])
			this._getAjaxData('../../ext/SelectAjaxAction.do?method=getPlanUnit','&id=planunit&');
		},
		/*
		 * 营销单位
		 */
		'bussPlace' : function() {
			this._getAjaxData('../../ext/SelectAjaxAction.do?method=getBussPlace','&id=bussplace&');
		},
		/*
		 * 营业员
		 */
		'optrInfo' : function() {
			this._getAjaxData('../../ext/SelectAjaxAction.do?method=getOptrData','&id=optrinfo&');
		},
		/*
		 * ajax方式查询数据
		 * private
		 */
		_getAjaxData : function(url,params) {
			var para = 'areacode='+$("#areacode").val()+'&busscode='+$("#busscode").val()+'&planunit='+$("#planunit").val()+'&bussplace='+$("#bussplace").val();
			$.ajax({
			 type: "POST",
			 url: url,
			 data: params+para,
			 beforeSend : function(){},
			 success: this._creatOption
			});
		},
		/*
		 * 获取请求返回的数据
		 * private
		 */
		_getData : function(responseText){
			return responseText;
		}
		,
		/*
		 * 获取请求返回的数据
		 * private
		 */
		_creatOption : function(responseText){
		.........
		}
	};
}();

你可能感兴趣的:(JavaScript,Ajax,ext,prototype,OO)