推荐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 相关文章推荐
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
js实现常用排序算法
Aug 09 Javascript
那些精彩的JavaScript代码片段
Jan 12 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
Node.js创建Web、TCP服务器
Dec 05 Javascript
javascript实现倒计时关闭广告
Feb 09 Javascript
JavaScript实现简单拖拽效果
Sep 15 Javascript
JavaScript 与 TypeScript之间的联系
Nov 27 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切割页面div内容的实现代码分享
2012/07/31 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php创建类并调用的实例方法
2019/09/25 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python函数参数分类原理详解
2020/05/28 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
新年联欢会主持词
2014/03/27 职场文书
电教室标语
2014/06/20 职场文书
查摆剖析材料范文
2014/09/30 职场文书
大雁塔英文导游词
2015/02/10 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
工会积极分子个人总结
2015/03/03 职场文书
学生病假条范文
2015/08/17 职场文书
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS