javascript 面向对象,实现namespace,class,继承,重载
2009-10-29 00:00
996 查看
由于组里项目大多的javascript,css等客户端工作是另一同事在负责,该同事又特忙无法重构,老大也就只是提建议并未立即实施重构。但是我前些日子也改过些许客户端的小bug,确实那代码看得让人有些云里雾里,不知身在哪山,轻易不敢动代码,于是就自己动手鼓捣起我曾又爱又恨的javascript来,自己写一个简单的js实现namespace,继承,重载等面向对象的特性.欢迎拍砖灌水
.定义namespace
Namesapce.js
.Employee.js
Employee.js
测试代码
源代码打包下载
.定义namespace
Namesapce.js
Namespace = new Object(); Namespace.register = function(fullname){ try { var nsArray = fullname.split("."); var strNS = ""; var strEval = ""; for(var i=0;i<nsArray.length;i++){ if(strNS.length >0) strNS += "."; strNS += nsArray[i]; strEval += " if(typeof("+ strNS +") =='undefined') " + strNS + " = new Object(); "; } if(strEval != "") eval(strEval); }catch(e){alert(e.message);} }
.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!" }
测试代码
<html> <title>javascript 面向对象的实现 namespace,class,继承,重载</title> <head> <script language="javascript" src="namespace.js" type="text/javascript"></script> <script language="javascript" src="employee.js" type="text/javascript"></script> <script language="javascript" type="text/javascript"> function showEmployee(){ var emp = new MyCompany.Employee("xiaoming"); showInfo(emp); } function showDeveloper(){ var emp = new MyCompany.Developer("Gates"); showInfo(emp); } function showInfo(emp){ alert(emp.ShowName()); alert(emp.Work()); } </script> </head> <body> <input type="button" value="show employee info" onclick="showEmployee();"/><br/><br/> <input type="button" value="show developer info" onclick="showDeveloper();"/> </body> </html>
源代码打包下载
相关文章推荐
- javascript 面向对象,实现namespace,class,继承,重载
- javascript面向对象,实现namespace,class,继承,重载
- java面向对象一:实现继承、重载、重写
- javascript 中面向对象实现 如何继承
- javascript面向对象实现方法(类的继承与多态)
- Javascript面向对象特性实现(封装、继承、接口)
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- (转)JavaScript 面向对象程序设计(下)——继承与多态
- 浅谈javascript对象、如何实现继承、jQuery方法的扩展(jquery插件)
- javascript复习笔记六----面向对象程序设计(继承)
- javascript 面向对象全新理练之原型继承
- javascript 面向对象特性与编程实现
- javascript模拟实现继承,继承一次父类模板和原型对象
- javascript的面向对象 函数 闭包 构造函数 继承
- 实现javaScript对象的"继承"的两种方法(prototype与闭包)
- 【译】不用构造函数(Constructor)也能实现JavaScript的面向对象
- 关于javascript语言的继承、面向对象问题的文章
- JavaScript的面向对象机理2)-继承
- javascript 面向对象特性与编程实现