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脚本
Dec 03 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
Feb 23 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 jQuery
JS传播事件、取消事件默认行为、阻止事件传播详解
Aug 14 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
Vue 路由 过渡动效 数据获取方法
Jul 31 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中的日期及时间
2006/11/23 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
PHP.vs.JAVA
2016/04/29 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
python实现京东秒杀功能
2018/07/30 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
股票投资建议书
2014/05/19 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers