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 相关文章推荐
Jquery Ajax的Get方式时需要注意URL地方
Apr 07 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
Jul 26 Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 Javascript
JavaScript 闭包详细介绍
Sep 28 Javascript
文件上传的几个示例分享【推荐】
Dec 16 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
JS获取短信验证码倒计时的实现代码
May 22 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
Jun 08 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Python 专题四 文件基础知识
2017/03/20 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
详解python statistics模块及函数用法
2019/10/27 Python
python实现低通滤波器代码
2020/02/26 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Django之腾讯云短信的实现
2020/06/12 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
英语感恩演讲稿
2014/01/14 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
投资协议书范本
2014/04/21 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
给客户的感谢信
2015/01/21 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
生产设备维护保养制度
2015/08/06 职场文书
三八节祝酒词
2015/08/11 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书