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

it2026-08-28  15

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

1.定义namespace

 

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

 

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)