就当我是重复造轮子吧,整理该文档给有需要的人用,包括我:)
先上一段最简单的:
//
以下几行代码展示了命名空间、类、以及函数的模拟定义和使用:
NameSpace = {};
NameSpace.Class = function (){
this .Method = function (info){alert(info);}
};
new NameSpace.Class().Method( " Hello world " );
NameSpace = {};
NameSpace.Class = function (){
this .Method = function (info){alert(info);}
};
new NameSpace.Class().Method( " Hello world " );
再来一些可见到的,各种情况的代码
1.类的模拟
//
类定义
function Class(info){
// 私有成员
var privateData = " private data " ;
var privateMethod = function (){writeline( " private " );};
function privateMethod2(info){writeline( " private " );}
// 公有成员(使用this)
this .Data = " public data " ;
this .Method = function (){writeline(info);};
};
// 类的静态成员
Class.StaticData = " static data " ;
Class.StaticMethod = function (info){writeline(info);};
function Class(info){
// 私有成员
var privateData = " private data " ;
var privateMethod = function (){writeline( " private " );};
function privateMethod2(info){writeline( " private " );}
// 公有成员(使用this)
this .Data = " public data " ;
this .Method = function (){writeline(info);};
};
// 类的静态成员
Class.StaticData = " static data " ;
Class.StaticMethod = function (info){writeline(info);};
2.命名空间的模拟
function
NameSpace(){}
或者
NameSpace = {};
或者
NameSpace = new Object();
或者
NameSpace = {};
或者
NameSpace = new Object();
3.目标:创建类实例,并调用实例方法
var o = new NameSpace.Class("hello world");
o.Method();
//
使用已有的类定义,并用静态方法挂到NameSpace下
NameSpace.Class1 = Class;
new NameSpace.Class1( " new NameSpace.Class1().Method() " ).Method();
// 或者:新建类定义
NameSpace.Class2 = function (info){
this .Method = function (){writeline(info);};
};
new NameSpace.Class2( " new NameSpace.Class2().Method() " ).Method();
NameSpace.Class1 = Class;
new NameSpace.Class1( " new NameSpace.Class1().Method() " ).Method();
// 或者:新建类定义
NameSpace.Class2 = function (info){
this .Method = function (){writeline(info);};
};
new NameSpace.Class2( " new NameSpace.Class2().Method() " ).Method();
4.目标:调用类的静态函数
NameSpace.Class.StaticMethod();
//
静态对象+静态方法
NameSpace.Class3 = {}; // {}表示这是一个对象,或者用new object();
NameSpace.Class3.Method = function (info) {writeline(info);};
NameSpace.Class3.Method( " NameSpace.Class3.Method() " );
// 或者:new一个对象赋予静态成员
NameSpace.Class4 = new Class( " NameSpace.Class4.Method() " );
NameSpace.Class4.Method();
// 或者:匿名函数用于定义类,再用new创建对象
NameSpace.Class5 = new ( function (info){
this .Method = function (){writeline(info);};
})( " NameSpace.Class5.Method() " );
NameSpace.Class5.Method();
// 或者:JSON方式(类定义+创建同时完成)
// 优点是简单,缺点是不能传递参数进去
NameSpace.Class6 = {
Method : function (info){writeline(info);}
};
NameSpace.Class6.Method( " NameSpace.Class6.Method() " );
NameSpace.Class3 = {}; // {}表示这是一个对象,或者用new object();
NameSpace.Class3.Method = function (info) {writeline(info);};
NameSpace.Class3.Method( " NameSpace.Class3.Method() " );
// 或者:new一个对象赋予静态成员
NameSpace.Class4 = new Class( " NameSpace.Class4.Method() " );
NameSpace.Class4.Method();
// 或者:匿名函数用于定义类,再用new创建对象
NameSpace.Class5 = new ( function (info){
this .Method = function (){writeline(info);};
})( " NameSpace.Class5.Method() " );
NameSpace.Class5.Method();
// 或者:JSON方式(类定义+创建同时完成)
// 优点是简单,缺点是不能传递参数进去
NameSpace.Class6 = {
Method : function (info){writeline(info);}
};
NameSpace.Class6.Method( " NameSpace.Class6.Method() " );
ps.很开心,vs2010对js的智能感知越来越好用了:p