推荐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 打印页面代码
Mar 24 Javascript
JavaScript中获取未知对象属性的代码
Apr 27 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
Jun 26 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
Aug 09 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
Feb 14 Javascript
基于jquery实现五星好评
Nov 18 jQuery
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 Javascript
Vue.js 表单控件操作小结
Mar 29 Javascript
vue 点击按钮增加一行的方法
Sep 07 Javascript
vue工程全局设置ajax的等待动效的方法
Feb 22 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
Node.js API详解之 console模块用法详解
May 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面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python代码能做成软件吗
2020/07/24 Python
利用python 下载bilibili视频
2020/11/13 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
外包公司软件测试工程师
2014/11/01 面试题
高级护理实习生自荐信
2013/09/28 职场文书
大学生毕业自荐信
2013/10/10 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
生物科学系大学生的自我评价
2013/12/20 职场文书
物业工作计划书
2014/01/10 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
运动会通讯稿300字
2015/07/20 职场文书