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面象对象设计
Apr 28 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
May 09 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
node.js cookie-parser 中间件介绍
Jun 06 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
详解webpack打包后如何调试的方法步骤
Nov 07 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
Nov 03 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
swfupload 多文件上传实现代码
2008/08/27 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
php字符串操作常见问题小结
2016/10/11 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
使用python对excle和json互相转换的示例
2018/10/23 Python
Python之修改图片像素值的方法
2019/07/03 Python
python如何随机生成高强度密码
2020/08/19 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python中类与对象之间的关系详解
2020/12/16 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
毕业生个人求职信范文分享
2014/01/05 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
苏州园林导游词
2015/02/03 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
驳回起诉裁定书
2015/05/19 职场文书