javascript面向对象,实现namespace,class,继承,重载

这几天老大天天嚷嚷要重构我们写的javascript,抱怨代码太混乱,可读性差,维护困难,要求javascript也按面对象的思想来重构,由于组里项目大多的javascript,css等客户端工作是另一同事在负责,该同事又特忙无法重构,老大也就只是提建议并未立即组织人员实施重构。但是我前些日子也改过这个项目的一些客户端的代码,确实那代码看得让人有些云里雾里,不知身在哪山,轻易不敢动代码,于是就自己动手鼓捣起我曾又爱又恨的javascript来,写一个简单的js实现namespace,继承,重载等面向对象的特性.欢迎拍砖灌水

1.定义namespace

 

ContractedBlock.gif ExpandedBlockStart.gif Namesapce.js
 1 Namespace = new Object();
 2 Namespace.register = function(fullname){
 3     try
 4 {
 5     var nsArray = fullname.split(".");
 6     var strNS = "";
 7     var strEval = "";
 8     for(var i=0;i<nsArray.length;i++){
 9        if(strNS.length >0)
10         strNS += ".";
11        strNS  += nsArray[i];
12            strEval += " if(typeof("+ strNS +") =='undefined') " + strNS +  " = new Object(); ";
13     }
14     if(strEval != "") eval(strEval);
15 
16 }catch(e){alert(e.message);}
17         
18 }

 

2.Employee.js

 

ContractedBlock.gif ExpandedBlockStart.gif Employee.js

//注册命名空间
Namespace.register("MyCompany");


//1.类:雇员
MyCompany.Employee = function(empName){
    
this.Name = empName;
    
this.Salary = 1000;
    
this.Position = "cleaner";
}

MyCompany.Employee.prototype.ShowName 
= function(){    
    
return "I'm "+this.Name+",my salary is $" + this.Salary;
}

MyCompany.Employee.prototype.Work 
= function(){
    
return "I'm a "+ this.Position  +",I'm cleaning all day!"
}

//2.类:程序员
MyCompany.Developer = function(empName){

    
//继承父类属性
    MyCompany.Employee.call(this,empName);
    
//覆盖父类属性
    this.Position = "developer";
    
//扩展属性
    this.Technology = "C#";    
}

//继承父类原型方法
MyCompany.Developer.prototype = new MyCompany.Employee();
//覆盖父类方法
MyCompany.Developer.prototype.Work = function(){
    
return "I'm a "+ this.Position +",i'm good at "+ this.Technology +",i'm coding all day!"
}

源代码:/Files/BenWong/demo.zip

 

终于,写完了,黑网吧这可恶的烂键盘,费老大劲才能敲下一个键,有时按下去又卡住弹不上来,“老板,这键盘该换了”

太影响心情了.....

转载于:https://www.cnblogs.com/BenWong/archive/2009/10/29/1592592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值