推荐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 相关文章推荐
写的htc的数据表格
Jan 20 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
利用jQuery中的ajax分页实现代码
Feb 25 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
微信小程序之购物车功能
Sep 23 Javascript
微信小程序 获取session_key和openid的实例
Aug 17 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
原生js实现Flappy Bird小游戏
Dec 24 Javascript
javascript实现计算指定范围内的质数示例
Dec 29 Javascript
微信小程序picker组件两列关联使用方式
Oct 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
在Python中增加和插入元素的示例
2018/11/01 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
浅谈Python中的模块
2020/06/10 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
马来西亚网上购物:Youbeli
2018/03/30 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
药品业务员岗位职责
2014/04/17 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
2016年万圣节活动总结
2016/04/05 职场文书