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 相关文章推荐
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
jquery获取子节点和父节点的示例代码
Sep 10 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
Oct 19 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
Jul 10 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
May 26 Javascript
js+canvas实现转盘效果(两个版本)
Sep 13 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
js+css在交互上的应用
2010/07/18 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python中关于日期时间处理的问答集锦
2013/03/08 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
Python学习之os模块及用法
2020/06/03 Python
python设置中文界面实例方法
2020/10/27 Python
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
一名老师的自我评价
2014/02/07 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
应届生求职信范文
2014/06/30 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
暑假生活随笔
2015/08/15 职场文书