推荐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代码)
Oct 29 Javascript
一样的table?不一样的table(可编辑状态table)
Sep 19 Javascript
jquery高效反选具体实现
May 05 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
五种js判断是否为整数类型方式
Dec 03 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
Dec 04 Javascript
Node.js 的模块知识汇总
Aug 16 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
laydate时间日历插件使用方法详解
Nov 14 Javascript
微信小程序实现带参数的分享功能(两种方法)
May 17 Javascript
原生js实现弹窗消息动画
Nov 20 Javascript
vue实现拖拽交换位置
Apr 07 Vue.js
使用 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
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
python实现机器人行走效果
2018/01/29 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
python中Mako库实例用法
2020/12/31 Python
python中pivot()函数基础知识点
2021/01/03 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
ORACLE十问
2015/04/20 面试题
医学护理毕业生自荐信
2013/11/07 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
美术专业自荐信
2014/07/07 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
爱国电影观后感
2015/06/19 职场文书
《搭石》教学反思
2016/02/18 职场文书