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 相关文章推荐
[推荐]javascript 面向对象技术基础教程
Mar 03 Javascript
javascript 不间断的图片滚动并可点击
Jan 15 Javascript
jQuery MD5加密实现代码
Mar 15 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
js设置组合快捷键/tabindex功能的方法
Nov 21 Javascript
Chrome扩展页面动态绑定JS事件提示错误
Feb 11 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
详解vue中axios的封装
Jul 18 Javascript
JS运算符简单用法示例
Jan 19 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
ThinkPHP缓存方法S()概述
2014/06/13 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jquery蒙版控件实现代码
2010/12/08 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python中的rjust()方法使用详解
2015/05/19 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python多线程并发实例及其优化
2019/06/27 Python
Python代码太长换行的实现
2019/07/05 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Python如何给函数库增加日志功能
2020/08/04 Python
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
企业消防安全制度
2014/02/02 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
色戒观后感
2015/06/12 职场文书
golang中的空slice案例
2021/04/27 Golang