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 相关文章推荐
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
JQuery Highcharts 动态生成图表的方法
Nov 15 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
Jquery性能优化详解
May 15 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
Jul 17 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
Vue.JS入门教程之自定义指令
Dec 08 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
vue-router history模式下的微信分享小结
Jul 05 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
Vue实现点击显示不同图片的效果
Aug 10 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
yii操作session实例简介
2014/07/31 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
JS实现图片切换特效
2019/12/23 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
基于openlayers实现角度测量功能
2020/09/28 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
Python3.6通过自带的urllib通过get或post方法请求url的实例
2018/05/10 Python
用django设置session过期时间的方法解析
2019/08/05 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
优秀学生事迹材料
2014/02/08 职场文书
经理助理岗位职责
2014/03/05 职场文书
四风问题查摆材料
2014/08/25 职场文书
党校毕业心得体会
2014/09/13 职场文书
创业计划书之便利店
2019/09/05 职场文书
Java死锁的排查
2022/05/11 Java/Android