js中实现多态采用和继承类似的方法


Posted in Javascript onAugust 22, 2014

多态的实现可以采用和继承类似的方法。首先定义一个抽象类,其中调用一些虚方法,虚方法在抽象类中没用定义,而是通过其具体的实现类来实现。

如下面的例子:

Object.extend=function(destination,source){ 
for(property in source){ 
destination[property]=source[property]; 
} 
return destination; 
} 
//定义一个抽象基类base,无构造函数 
function base(){}; 

base.prototype={ 
initialize:function(){ 
this.oninit();//调用了一个虚方法 
} 
} 
function SubClassA(){ 
//构造函数 
} 
SubClassA.prototype=Object.extend({ 
propInSubClassA:"propInSubClassA", 
oninit:function(){ 
alert(this.propInSubClassA); 
} 
},base.prototype); 

function SubClassB(){ 
//构造函数 
} 
SubClassB.prototype=Object.extend({ 
propInSubClassB:"propInSubClassB", 
oninit:function(){ 
alert(this.propInSubClassB); 
} 
},base.prototype); 

var objA=new SubClassA(); 
objA.initialize();//输出"propInSubClassA" 

var objB=new SubClassB(); 
objB.initialize();//输出"propInSubClassB"

首先定义了一个抽象基类base,在base类的initialize方法中调用了oninit方法,但是基类中并没用oninit方法的实现或者声明。SubClassA和SubClassB类继承自base类,并且分别采用了不同的方式对oninit方法进行实现。

Javascript 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
jQuery $.each的用法说明
Mar 22 Javascript
在模板页面的js使用办法
Apr 01 Javascript
JavaScript格式化数字的函数代码
Nov 30 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
js中prototype用法详细介绍
Nov 14 Javascript
深入理解jquery中的事件与动画
May 24 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
Nov 09 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
js中运算符&& 和 || 的使用记录
Aug 21 #Javascript
字段太多jquey快速清空表单内容方法
Aug 21 #Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 #Javascript
jQuery控制TR显示隐藏的三种常用方法
Aug 21 #Javascript
jQuery截取指定长度字符串代码
Aug 21 #Javascript
jquery实现的下拉和收缩效果示例
Aug 21 #Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 #Javascript
You might like
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
Python程序暂停的正常处理方法
2019/11/07 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
遗产继承公证书
2014/04/09 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
努力学习保证书
2015/02/26 职场文书
清明节寄语2015
2015/03/23 职场文书
采购员岗位职责范本
2015/04/07 职场文书
员工加薪申请报告
2015/05/15 职场文书
python游戏开发之pygame实现接球小游戏
2022/04/22 Python
PHP RabbitMQ消息列队
2022/05/11 PHP