推荐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对象的property和prototype是什么一种关系
Aug 06 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
Node.js 异步编程之 Callback介绍(一)
Mar 30 Javascript
总结在前端排序中遇到的问题
Jul 19 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
JS中type="button"和type="submit"的区别
Jul 04 Javascript
vue-cli3 karma单元测试的实现
Jan 18 Javascript
关于angular浏览器兼容性问题的解决方案
Jul 26 Javascript
js Proxy的原理详解
May 25 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数据的三种方法
2006/10/09 PHP
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
php获取url参数方法总结
2014/11/13 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
js单词形式的运算符
2014/05/06 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
浅谈Python中的闭包
2015/07/08 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python win32 简单操作方法
2017/05/25 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
大码女装:Ulla Popken
2019/08/06 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
本科应届生自荐信
2014/06/29 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
庆七一晚会主持词
2015/06/30 职场文书
运动员加油词
2015/07/18 职场文书
获奖感言范文
2015/07/31 职场文书
2015国庆节感想
2015/08/04 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
小学思品教学反思
2016/02/20 职场文书