推荐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中URL编码函数代码
Jan 11 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
Jan 23 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 Javascript
微信小程序 wx.uploadFile无法上传解决办法
Dec 14 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
Mar 28 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
Python random模块常用方法
2014/11/03 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python实现Dijkstra算法
2018/10/17 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
Python LMDB库的使用示例
2021/02/14 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
2014年庆元旦活动方案
2014/02/15 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
华山导游词
2015/02/03 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
Python一些基本的图像操作和处理总结
2021/06/23 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL