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 相关文章推荐
javascript据option的value值快速设定初始的selected选项
Aug 13 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
读jQuery之六 缓存数据功能介绍
Jun 21 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
Dec 27 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
微信小程序 input输入框详解及简单实例
Jan 10 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
Jul 26 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 Javascript
js canvas实现画图、滤镜效果
Nov 27 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中的类型约束介绍
2015/05/11 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
phpwind放自动注册方法
2006/12/02 Javascript
动态表格Table类的实现
2009/08/26 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
Python探索之URL Dispatcher实例详解
2017/10/28 Python
python先序遍历二叉树问题
2017/11/10 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
公司市场专员岗位职责
2014/06/29 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书