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处理表格对table进行修饰
May 26 Javascript
使用mini-define实现前端代码的模块化管理
Dec 25 Javascript
JavaScript返回0-1之间随机数的方法
Apr 06 Javascript
js实现获取当前时间是本月第几周的方法
Aug 11 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
Jun 17 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 Javascript
JavaScript之数组扁平化详解
Jun 03 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
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学习笔记之多表查询
2014/07/28 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
慎用 somefunction.prototype 分析
2009/06/02 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
Vuex提升学习篇
2018/01/11 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
python人人网登录应用实例
2014/09/26 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
留学推荐信怎么写
2014/01/25 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
行政部岗位职责范本
2014/03/13 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
村官个人总结范文
2015/03/03 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers