利用javascript中的call实现继承


Posted in Javascript onJanuary 22, 2007

昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来.
实现setTimeout传object对象
看以下代码实现向里面的function 传参数
<script type="text/javascript">
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) {
 if(typeof fRef == 'function'){
  var argu = Array.prototype.slice.call(arguments,2);
  var f = (function(){ fRef.apply(null, argu); });
  return _st(f, mDelay);
 }
 return _st(fRef,mDelay);
}
function test(x){
 alert(x);
}
window.setTimeout(test,1000,'fason');
</script>

call方法JScript参考中的说明:调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是没有示例 
apply方法JScript参考中的说明:应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,argArray]]) 
实际上这两个的作用几乎是相同的,要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg参数可以是变量,而apply([thisObj[,argArray]])中的参数为数组集合。 

今早又看到一篇利用call实现继承的例子.呵呵..也一并贴出来.这个例子比较简单.就算是由浅入深吧
<script language="javascript" type="text/javascript">

      function father(){//父类

             var self=this;                                  //私有变量,子类里不会继承!

             var var_private="private variable";      //私有变量

             this.var_public="public variable";  //公有变量

             

             this.author="xling";

             this.test=function(msg){                  //公有方法

                   alert("该方法位于父类 :" + msg + "\n" + self.author);

             }

             

             var test2=function(){                      //私有方法,子类不能调用

                   alert("这个方法是父类的私有方法");

             }

      }

      

      function father2(){

             this.email="xlingFairy#hotmail.com";

      }

      

      function suber(){//子类

             father.call(this);//通过这一句来继承父类(father)类的可见变量及方法(this)

      }

      

      function sun(){

             suber.call(this);

             father2.call(this);//和上面的一句放在一起,???多重?承!爽啊!

      }

      

      var mySuber=new suber();

             mySuber.test("参数是从子类的实例里传入的");

             //mySuber.test2(); //这一句会发生错误码,因为test2是父类的私有类

             alert("父类的私有变量,子类不能读取:" + mySuber.var_private);

             alert("父类的公有变量,子类可以读取" + mySuber.var_public);

      

      var mySun=new sun();

             mySun.test("这个是从孙子级的实例里传入的参数");

             alert("父类的私有变量,子类不能读取:" + mySun.var_private);

             alert("父类的公有变量,子类可以读取" + mySun.var_public);

             alert(mySun.email);

</script>

Javascript 相关文章推荐
jQuery数组处理方法汇总
Jun 20 Javascript
使用jquery动态加载javascript以减少服务器压力
Oct 29 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
Sep 04 Javascript
js中使用使用原型(prototype)定义方法的好处详解
Jul 04 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
详解网站中图片日常使用以及优化手法
Jan 09 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
Feb 20 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
JavaScript闭包_动力节点Java学院整理
Jun 27 Javascript
node.js操作MongoDB的实例详解
Oct 11 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 Javascript
详解Vue串联过滤器的使用场景
Apr 30 Javascript
Javascript里使用Dom操作Xml
Jan 22 #Javascript
幻宇的层模拟窗口效果-提供演示和下载
Jan 20 #Javascript
写的htc的数据表格
Jan 20 #Javascript
共享自己写一个框架DreamScript
Jan 20 #Javascript
javascript读取RSS数据
Jan 20 #Javascript
一个多次搜索+多次传值的解决方案
Jan 20 #Javascript
短信提示使用 特效
Jan 19 #Javascript
You might like
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
提升Python程序运行效率的6个方法
2015/03/31 Python
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
10条PHP编程习惯
2014/05/26 面试题
类、抽象类、接口的差异
2016/06/13 面试题
开学典礼主持词
2014/03/19 职场文书
大学新闻系自荐书
2014/05/31 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
中学生检讨书1000字
2014/10/28 职场文书
学生检讨书
2015/01/27 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书