Javascript玩转继承(三)


Posted in Javascript onMay 08, 2014

首先,我们来看非主流继承一:实例继承法。

我也不说那么多废话了,既然是非主流继承,就一定不常用,既然不常用还存在,那就只有一个因素,他用于特定的场合。实例继承法,就主要用于核心对象的继承,也是目前为止唯一能够解决核心对象继承的方式。

核心对象的继承拥有一定的价值,比如说Error对象,我们公司可能要自己实现一个Error 类来简化今后的开发,那么这个时候我就要使用实例继承法来继承Error。

代码如下:

function ExtendingError(mes)
{
    var instance=new Error(mes);
    instance.NewError=function(){
        alert("Your Error is "+mes);    
    }
    return instance;
}

好,测试下:

var e=new ExtendingError("Your number is less than one");
e.NewError();
alert(e.toString());

结果让我们满意:
Javascript玩转继承(三)

Javascript玩转继承(三)

好,废话不多说,这个是非主流继承方式,基本只用于核心对象的继承,记住就好!
接下来看看非主流继承二:拷贝继承法.

顾名思义,拷贝继承,就是通过拷贝实现对象的继承,拷贝什么呢?很明显,就是对象的属性和方法,还记得Javascript中,类其实就一个Hashtable么?如果想不起来的话,就回去复习一下基础,我可能会在过一段时间写一篇关于Javascript对象的知识。
了解了这个就好办了,直接看代码:
首先写一个Extend方法:

Function.prototype.Extend=function(){
    for(var pro in obj)
    {
        //这样其实就是把父类的属性和方法完全复制过去了
        this.prototype[pro]=obj[pro];
}
}

好了,再写段代码看下如何使用:

function Animal()
{    }
function People()
{    }
People.Extend(new Animal())
{    }

明眼人一眼看出来,这个方法的缺点太明显了:
将对象的属性方法一一复制的时候,其实用的是反射,反射对效率的损伤我就不多说了。
和原型继承一样,必须初始化父类对象,当确定继承关系时,但是参数还不确定时,玩不转!

总之,这个方法一般情况下不用。

好了,下面说个常用的东西。混合继承!
这个是基于两个主流继承方式的。对比两个继承方式,我们可以发现两个继承方式的优缺点是互补的,那就好办了,混合到一起吧!

function People(name)
{
    this.name=name;
    this.SayName=function(){
        alert("My name is "+name);
}
}
function Girl(name,age)
{
    //构造继承
    this.father=People;
    this.father(name);
    delete this.father;
    this.Introduce=function(){
        alert("My name is "+name+".I am"+age);
}
}
//原型继承
Girl.prototype=new People();
好了,两种方式的混合,现在看看,是不是问题解决了呢?
var g=new Girl("Xuan",22);
alert(g instanceof People);
g.SayName();
g.Introduce();

Javascript玩转继承(三)

Javascript玩转继承(三)

Javascript玩转继承(三)

测试通过!

这是一个相对完美的解决方案,但是却增加了代码的复杂度,所以具体的方案还要靠大家在实践中去选择。

Javascript玩转继承的方式就这些,欢迎大家继续关注我的其他文章。 

Javascript 相关文章推荐
jquery下组织javascript代码(js函数化)
Aug 25 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
JS的location.href跳出框架打开新页面的方法
Sep 04 Javascript
js实现编辑div节点名称的方法
Dec 17 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
May 12 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
Jul 29 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
JS中的防抖与节流及作用详解
Apr 01 Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 Javascript
Javascript玩转继承(二)
May 08 #Javascript
js的Prototype属性解释及常用方法
May 08 #Javascript
Javascript玩转继承(一)
May 08 #Javascript
玩转方法:call和apply
May 08 #Javascript
jQuery产品间断向下滚动效果核心代码
May 08 #Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
May 08 #Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 #Javascript
You might like
php 购物车实例(申精)
2009/05/11 PHP
PHP用mysql数据库存储session的代码
2010/03/05 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
php修改数组键名的方法示例
2017/04/15 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
python实现趣味图片字符化
2019/04/30 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
Python列表list操作相关知识小结
2020/01/29 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
Python如何读取、写入CSV数据
2020/07/28 Python
python 下划线的不同用法
2020/10/24 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
生产厂长岗位职责
2014/02/21 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
工会文体活动总结
2015/05/07 职场文书
离职信范文
2015/06/23 职场文书