推荐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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
动态加载dtree.js树treeview(示例代码)
Dec 17 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
javascript模拟php函数in_array
Apr 27 Javascript
javascript中递归函数用法注意点
Jul 30 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
jQuery计算文本框字数及限制文本框字数的方法
Mar 01 Javascript
简述Angular 5 快速入门
Nov 04 Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
理解Python中的绝对路径和相对路径
2017/08/30 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python实现证件照换底功能
2019/08/20 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
Python3 集合set入门基础
2020/02/10 Python
Python实现井字棋小游戏
2020/03/09 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
SQL面试题
2013/12/09 面试题
执行力心得体会
2013/12/31 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
投标承诺书怎么写
2014/05/24 职场文书
关于环保的标语
2014/06/13 职场文书
门面房租房协议书
2014/08/20 职场文书
信仰心得体会
2014/09/05 职场文书
个人总结怎么写
2015/02/26 职场文书
产品质量保证书范本
2015/02/27 职场文书