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 相关文章推荐
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 Javascript
js格式化货币数据实现代码
Sep 04 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
js用typeof方法判断undefined类型
Jul 15 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
Javascript基础_嵌入图像的简单实现
Jun 14 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
Sep 15 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
原生js实现购物车功能
Sep 23 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入门速成(2)
2006/10/09 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
vue模块拖拽实现示例代码
2019/03/09 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
大学生求职自我评价
2014/01/16 职场文书
服务之星事迹材料
2014/05/03 职场文书
甘南现象心得体会
2014/09/11 职场文书
刑事撤诉申请书
2015/05/18 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
python 离散点图画法的实现
2022/04/01 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技