先上一段最简单的: 复制代码 代码如下: // 以下几行代码展示了命名空间、类、以及函数的模拟定义和使用: 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);}; 2.命名空间的模拟 复制代码 代码如下: function NameSpace(){} 或者 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(); 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()"); 演示代码:
Javascript 类和命名空间的模拟
请查看源代码并跟踪测试
整理收集:http://surfsky.cnblogs.com
最后更新:2010-10
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]ps.很开心,vs2010对js的智能感知越来越好用了:p 出处:http://surfsky.cnblogs.com
推荐阅读
Dom元素变换效果(工具函数)
用js来控制行为,控制页面表现。恐怕是我们用它来做的最多的事情了... jQuery为什么这么受欢迎,我想,一方面是它的选择器[selector]足够牛B,另一方面应该要归功于它在dom变换上做足了功夫。 于是,秉承着>>>详细阅读
本文标题:javascript 类和命名空间的模拟代码
地址:http://www.17bianji.com/kaifa2/JS/25571.html
1/2 1