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


Posted in Javascript onOctober 29, 2009

由于组里项目大多的javascript,css等客户端工作是另一同事在负责,该同事又特忙无法重构,老大也就只是提建议并未立即实施重构。但是我前些日子也改过些许客户端的小bug,确实那代码看得让人有些云里雾里,不知身在哪山,轻易不敢动代码,于是就自己动手鼓捣起我曾又爱又恨的javascript来,自己写一个简单的js实现namespace,继承,重载等面向对象的特性.欢迎拍砖灌水
.定义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 相关文章推荐
HTML中事件触发列表与解说
Jul 09 Javascript
javascript 防止刷新,后退,关闭
Aug 07 Javascript
validator验证控件使用代码
Nov 23 Javascript
JavaScript数组各种常见用法实例分析
Aug 04 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
js中常用的Tab切换效果(推荐)
Aug 30 Javascript
详解用vue-cli来搭建vue项目和webpack
Apr 20 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
详解Node中导入模块require和import的区别
Aug 11 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 #Javascript
jQuery 判断元素上是否绑定了事件
Oct 28 #Javascript
Firebug 字幕文件JSON地址获取代码
Oct 28 #Javascript
jquery 选择器部分整理
Oct 28 #Javascript
JavaScript 全角转半角部分
Oct 28 #Javascript
js apply/call/caller/callee/bind使用方法与区别分析
Oct 28 #Javascript
javascript 时间比较实现代码
Oct 28 #Javascript
You might like
php抓取https的内容的代码
2010/04/06 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Python语言描述KNN算法与Kd树
2017/12/13 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
Python3多线程基础知识点
2019/02/19 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
幼儿园保教管理制度
2014/02/03 职场文书
警校毕业生自我评价
2014/04/06 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
心灵捕手观后感
2015/06/02 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android
Redis高并发缓存架构性能优化
2022/05/15 Redis
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android