利用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 相关文章推荐
JavaScript 学习笔记(十五)
Jan 28 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
节点的插入之append()和appendTo()的用法介绍
Jan 13 Javascript
angularJS中router的使用指南
Feb 09 Javascript
JS实现选项卡实例详解
Nov 17 Javascript
js字符串与Unicode编码互相转换
May 17 Javascript
微信小程序画布圆形进度条显示效果
Nov 17 Javascript
node中的session的具体使用
Sep 14 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
解决在Vue中使用axios用form表单出现的问题
Oct 30 Javascript
JavaScript实现图片合成下载的示例
Nov 19 Javascript
JavaScript中的宏任务和微任务详情
Nov 27 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
杏林同学录(八)
2006/10/09 PHP
PHP使用数组实现队列
2012/02/05 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
网上抓的一个特效
2007/05/11 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery实现保存已选用户
2014/07/21 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
python通过加号运算符操作列表的方法
2015/07/28 Python
python开发之str.format()用法实例分析
2016/02/22 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python模拟表单提交登录图书馆
2018/04/27 Python
基于python中theano库的线性回归
2018/08/31 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
英国复古服装购物网站:Collectif
2019/10/30 全球购物
C#基础面试题
2016/10/17 面试题
就业意向书范文
2014/04/01 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
劳动模范获奖感言
2015/07/31 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python