推荐JavaScript实现继承的最佳方式


Posted in Javascript onNovember 11, 2014

   实现JavaScript继承的最简单的方式是call方法(或者apply方法)及原型链方法,但这两种方法都有缺陷,而其混合体就是很好的继承实现方式。下面举例说明:

function Animal(age){

    this.age = age;

}

Animal.prototype.sayAge = function(){

    window.alert("My age is "+this.age+"!");

};

function Dog(age,name){

    Animal.call(this,age);

    this.name = name;

}

Dog.prototype = new Animal();

Dog.prototype.sayName = function(){

    window.alert("I am a "+this.name+"!");

};

var dog = new Dog(15,"dog");

dog.sayName();

dog.sayAge();

    对于类Animal来说,它有一个字段属性age及函数属性sayAge,sayAge方法的定义采用的是原型方式。Dog类要继承Animal,其字段属性除了age外还有name,通过Animal.call(this,age);可以实现Dog继承Animal的字段属性age并将其初始化了。call方法的第一个参数为继承的类的this指针,第二个参数为Animal类的构造函数的参数。实际上,只是通过call方法就可以实现继承,但唯一的要求是父类的函数属性要在构造函数中定义,这对于这里的函数属性使用原型方式定义来说就不适合了(采用原型方式定义函数属性比在构造函数内定义更直观一些)。要想继承Animal的原型方式定义的函数属性,需要的语句就是“Dog.prototype = new Animal();”。而Dog类中的sayName()函数则是其自身的函数属性了。

 除了这个最经典的实现继承的方式外,目前还有一些免费的库可供使用。但想到形形色色的库,头就大了,有时间有必要时再研究吧!

Javascript 相关文章推荐
javascript之解决IE下不渲染的bug
Jun 29 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
js自动闭合html标签(自动补全html标记)
Oct 04 Javascript
jQuery中change事件用法实例
Dec 26 Javascript
10个JavaScript中易犯小错误
Feb 14 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
Aug 01 Javascript
js转html实体的方法
Sep 27 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
highcharts 在angular中的使用示例代码
Sep 20 Javascript
简单的Vue SSR的示例代码
Jan 12 Javascript
使用 js+正则表达式为关键词添加链接
Nov 11 #Javascript
jQuery 动态云标签插件
Nov 11 #Javascript
javascript 回调函数详解
Nov 11 #Javascript
JSON格式化输出
Nov 10 #Javascript
再谈javascript原型继承
Nov 10 #Javascript
让angularjs支持浏览器自动填表
Nov 10 #Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
Nov 10 #Javascript
You might like
分页详解 从此分页无忧(PHP+mysql)
2007/11/23 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
Python 流程控制实例代码
2009/09/25 Python
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python dlib人脸识别代码实例
2019/04/04 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
会计专业推荐信
2013/10/29 职场文书
致全体运动员广播稿
2014/02/01 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
员工保密承诺书
2014/05/28 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
大学生赌博检讨书
2014/09/22 职场文书
项目合作协议书
2014/09/23 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
Python 图片添加美颜效果
2022/04/28 Python