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 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
Javascript base64编码实现代码
Dec 02 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 Javascript
JS简单实现数组去重的方法示例
Mar 27 Javascript
通俗易懂地解释JS中的闭包
Oct 23 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
微信小程序缓存支持二次开发封装实现解析
Dec 16 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
JS前端监控采集用户行为的N种姿势
Jul 23 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
个人作风剖析材料
2014/02/02 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
大学生作弊检讨书
2014/02/19 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
2014年信访工作总结
2014/11/17 职场文书
现场施工员岗位职责
2015/04/11 职场文书
nginx共享内存的机制详解
2022/03/21 Servers