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 相关文章推荐
Mootools 1.2教程(2) DOM选择器
Sep 14 Javascript
使用ExtJS技术实现的拖动树结点
Aug 05 Javascript
jquery 全局AJAX事件使用代码
Nov 05 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 Javascript
javascript实现文本框标签验证的实例代码
Oct 14 Javascript
详解Vue.js自定义tipOnce指令用法实例
Dec 19 Javascript
JavaScript工具库MyTools详解
Jan 01 Javascript
JavaScript Window浏览器对象模型原理解析
May 30 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
javascript每日必学之继承
2016/02/23 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python制作抖音代码舞
2019/04/07 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
python适合做数据挖掘吗
2020/06/16 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
销售文员岗位职责
2013/11/29 职场文书
创业女性典型材料
2014/05/02 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
创业计划书之家教中心
2019/09/25 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers