在网上找了很多一直没找到关于JS扩展父类的方法,让我很是郁闷啊~要是真的开发组遇到了该咋整,于是乎自己手写了一些测试代码,没想到通过了……(难道是人品太好了?)废话不多说了直接上代码看看~

  

 <script type="text/javascript">
function chaolei(name){
this.name=name;
this.show=function(){
alert("超类");
};
}
function zilei(name){
this.name=name;
}
zilei.prototype=new chaolei();
zilei.prototype.constructor=zilei;
zilei.prototype.show=function(){
chaolei.call(zilei);
zilei.show();
alert(this.name);
};
var a=new zilei("我是谁?");
a.show();
</script>

  用的是标准的原型链的继承写法,通过call函数来扩展了父类的show方法。运行的结果为先弹出“超类”然后弹出“我是谁”。

  简单说一下原理吧(这里不介绍如何继承,想看继承去我以前的文章里找吧~)。这里继承完父类后,子类通过prototype给自己增加了一个show方法,这个方法和父类的show方法同名,所以如果不用call会覆盖掉父类的方法,但是我们用call之后首先让父类的show方法可以在子类中调用,这就是chaolei.call(zilei)的作用了,这里建议用子类的名字作为参数,因为如果用this的话会造成污染,因为这样的话作用域就变成了整个子类show方法,如果父类中也有一个跟子类相同的变量this.name那么接下来的alert(this.name)弹出的就是父类的了。然后zilei.show()这个就是调用的父类的show方法了(因为用了call函数,所以这里调用show时只能调用父类的因为子类的show还没有完成)。这里需要强调一点,如果call里面的参数是zilei的话接下来zilei.show这里也必须用“zilei”否则会报错。然后再一个alert(this.name);就是调用子类的变量了~所以也就先执行了父类的show然后又运行了子类show方法的扩展了!

  以上是我的个人理解,如果有不多的地方还请高手拍砖~并给我指明错误~谢谢!

js扩展父类方法的更多相关文章

  1. 如何使用 js 扩展 prototype 方法

    如何使用 js 扩展 prototype 方法 expand prototype function enhancedLog(msg = ``) { // this.msg = msg; enhance ...

  2. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  3. JS扩展方法——字符串trim()

    转自:http://www.cnblogs.com/kissdodog/p/3386480.html <head> <title>测试JS扩展方法</title> ...

  4. JS扩展方法

    JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现.这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣. 下面给出一个例子 ...

  5. jquery 扩展插件方法

    分析插件jquery.countdown.js (function($) { $.fn.countdown = function(options) { // default options var d ...

  6. 封装jQuery Validate扩展验证方法

    一.封装自定义验证方法-validate-methods.js /***************************************************************** j ...

  7. Xilium.CefGlue利用XHR实现Js调用c#方法

    防外链 博客园原文地址在这里http://www.cnblogs.com/shen6041/p/3442499.html 引 Xilium CefGlue是个不错的cef扩展工程,托管地址在这里 ht ...

  8. JS扩展 或 Jquery的扩展写法

    <script>//JS扩展String函数test,其它类推String.prototype.test = function(s){ alert(this+s);}var str = ' ...

  9. esayui扩展验证方法

    下面是关于平时中积累的esayui扩展验证方法仅作记录:       /**************************************************************** ...

随机推荐

  1. 《分布式Java应用之基础与实践》读书笔记一

    分布式Java应用的体系结构知识简单分为: 网络通信:包括协议和IO 消息方式的系统间通信:包括基于Java包.基于开源框架.性能角度 远程调用方式的系统间通信:包括基于Java包.基于开源框架.性能 ...

  2. Eclipse导入Android签名

    本篇主要参照http://blog.csdn.net/wuxy_shenzhen/article/details/20946839 在安装安卓apk时经常会出现类似INSTALL_FAILED_SHA ...

  3. EzHttp 使用Https协议时证书如何部署

    今天为EzHttp增加了https支持, EzHttp介绍见这里:使用EzHttp框架 开发基于HTTP协议的CS轻应用 服务端启动时会创建自签名证书,并将其绑定到启动参数url对应的端口上. 服务端 ...

  4. js倒计时,秒倒计时,天倒计时

    按天倒计时 HTML代码1: <Script Language="JavaScript"> <!-- Begin var timedate= new Date(& ...

  5. NodeJs之fs的读写删移监

    NodeJs版本:4.4.4 fs 文件系统模块是一个封装了标准的 POSIX 文件 I/O 操作的集合.Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本. 图片的复制与粘贴 创建 ...

  6. HttpClient研究学习总结

    Http协议非常的重要,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人 ...

  7. git 设置不需要输入密码, 去除 fetch / pull 代码每次都需要输入密码的烦恼

    https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...

  8. TOMCAT的框架结构

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...

  9. jquery获取文件名称

    $("#fileupload").on("change",function(){ var filePath=$(this).val(); if(filePath ...

  10. 微信小程序中在swiper-item中遍历循环添加多个数据内容(微信小程序交流群:604788754)

    在小程序中为了实现一个<swiper-item>中添加多个内容重复的标签,那就需要使用wx:for循环.如果按小程序的简易教程,循环加在block中,而swiper-item放在里面.所有 ...