js模拟类继承小例子


Posted in Javascript onJuly 17, 2010
//使用原型继承,中间使用临时对象作为Child的原型属性,临时对象的原型属性再指向父类的原型, 
//防止所有子类和父类原型属性都指向通一个对象. 
//这样当修改子类的原型属性,就不会影响其他子类和父类 
function extend(Child, Parent) { 
var F = function(){}; 
F.prototype = Parent.prototype; 
Child.prototype = new F(); 
Child.prototype.constructor = Child; 
Child.base = Parent.prototype; 
} function Parent(name) 
{ 
this.aa = 123; 
this.getName = function() {return name;}; //使用闭包模拟私有成员 
this.setName = function(value){name=value;}; 
} 
Parent.prototype.print = function(){alert("print!");}; 
Parent.prototype.hello = function() 
{ 
alert(this.getName() + "Parent") 
}; 
function Child(name,age) 
{ 
Parent.apply(this, arguments);//调用父类构造函数来继承父类定义的属性 
this.age = age; 
} 
extend(Child,Parent); //继承Parent 
Child.prototype.hello = function() //重写父类hello方法 
{ 
alert(this.getName() + "Child"); 
Parent.prototype.hello.apply(this,arguments); //调用父类同名方法 
}; 
//子类方法 
Child.prototype.doSomething = function(){ alert(this.age + "Child doSomething"); }; 
var p1 = new Child("xhan",22); 
var p2 = new Child("xxx",33); 
p1.hello(); 
p2.hello(); 
p1.doSomething(); //子类方法 
p1.print(); //父类方法 
alert(p1 instanceof Child); //true 
alert(p1 instanceof Parent);//true
Javascript 相关文章推荐
js在IE与firefox的差异集锦
Nov 11 Javascript
提高jQuery性能优化的技巧
Aug 03 Javascript
jQuery实现的简洁下拉菜单导航效果代码
Aug 26 Javascript
详解iframe与frame的区别
Jan 13 Javascript
AngularJS基础 ng-class-odd 指令示例
Aug 01 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
Feb 23 Javascript
jQuery实现frame之间互通的方法
Jun 26 jQuery
Vue代码分割懒加载的实现方法
Nov 23 Javascript
使用pkg打包Node.js应用的方法步骤
Oct 19 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
深入webpack打包原理及loader和plugin的实现
May 06 Javascript
javascript 循环读取JSON数据的代码
Jul 17 #Javascript
一个可绑定数据源的jQuery数据表格插件
Jul 17 #Javascript
js跨域问题之跨域iframe自适应大小实现代码
Jul 17 #Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
Jul 17 #Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 #Javascript
基于jquery的Repeater实现代码
Jul 17 #Javascript
javascript onmouseout 解决办法
Jul 17 #Javascript
You might like
PHP基础学习小结
2011/04/17 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
php实现的CSS更新类实例
2014/09/22 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
店面销售职位的职责
2014/03/09 职场文书
公司会议开幕词
2015/01/29 职场文书
会议新闻稿
2015/07/17 职场文书
Python上下文管理器Content Manager
2021/06/26 Python
分析并发编程之LongAdder原理
2021/06/29 Java/Android
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers