javascript 类和命名空间的模拟

本文介绍了一种在JavaScript中模拟面向对象编程的方法,包括类、命名空间的定义及使用,同时还展示了如何创建类实例并调用其方法。

就当我是重复造轮子吧,整理该文档给有需要的人用,包括我:)

先上一段最简单的:

//  以下几行代码展示了命名空间、类、以及函数的模拟定义和使用:
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() " );

 

代码下载:/Files/surfsky/oo.htm

ps.很开心,vs2010对js的智能感知越来越好用了:p

 

转载于:https://www.cnblogs.com/surfsky/archive/2010/10/19/1855615.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值