利用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 相关文章推荐
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
javascript 实现简单的table排序及table操作练习
Dec 28 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
Dec 28 Javascript
ajax读取数据后使用jqchart显示图表的方法
Jun 10 Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
May 05 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
Nov 30 Javascript
Vue.js中的图片引用路径的方式
Jul 28 Javascript
js实现选项卡效果
Mar 07 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
Apr 08 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
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
php提交post数组参数实例分析
2015/12/17 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
Python实现简单的可逆加密程序实例
2015/03/05 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Python图像读写方法对比
2020/11/16 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
软件工程师岗位职责
2013/11/16 职场文书
高校自主招生自荐信
2013/12/09 职场文书
机电一体化自荐信
2013/12/10 职场文书
综治宣传月活动总结
2014/04/28 职场文书
党员服务承诺书
2014/05/28 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
OpenCV 图像梯度的实现方法
2021/07/25 Python