利用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 相关文章推荐
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
jQuery中removeClass()方法用法实例
Jan 05 Javascript
jQuery仿天猫实现超炫的加入购物车
May 04 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
Nov 03 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
Feb 11 Javascript
用vue和node写的简易购物车实现
Apr 25 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
angularjs 动态从后台获取下拉框的值方法
Aug 13 Javascript
Vue的状态管理vuex使用方法详解
Feb 05 Javascript
详解Vue之事件处理
Jul 10 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
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
Smarty模板配置实例简析
2019/07/20 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
django创建css文件夹的具体方法
2020/07/31 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
python中uuid模块实例浅析
2020/12/29 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
优秀生推荐信范文
2013/11/28 职场文书
英文自荐信
2013/12/15 职场文书
会计工作心得体会
2014/01/13 职场文书
工作违纪检讨书
2014/02/17 职场文书
治安消防安全责任书
2014/07/23 职场文书
商场促销活动策划方案
2014/08/18 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL