利用javascript中的call实现继承

 更新时间:2007年01月22日 00:00:00   作者:  
昨天阿丹传了一个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>

相关文章

  • JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】

    JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】

    这篇文章主要介绍了JS+HTML5实现的前端购物车功能插件,结合完整实例形式分析了JS结合HTML5的storage特性存储数据实现购物车功能的相关操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2016-10-10
  • js 创建一个浮动div的代码

    js 创建一个浮动div的代码

    js 创建一个浮动div的代码,一般用来指导用户下面的操作与多条件选择。点击一下就可显示,具体的大家可以自由发挥。
    2009-12-12
  • JavaScript 如何删除小数点后的数字

    JavaScript 如何删除小数点后的数字

    这篇文章主要介绍了JavaScript 删除小数点后的数字实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 老生常谈js动态添加事件--- 事件委托

    老生常谈js动态添加事件--- 事件委托

    下面小编就为大家带来一篇老生常谈js动态添加事件--- 事件委托。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 微信小程序实现动态设置页面标题的方法【附源码下载】

    微信小程序实现动态设置页面标题的方法【附源码下载】

    这篇文章主要介绍了微信小程序实现动态设置页面标题的方法,涉及微信小程序button组件事件绑定及页面元素属性动态设置相关实现技巧,并附带完整源码供读者下载参考,需要的朋友可以参考下
    2017-11-11
  • JS打印彩色菱形的实例代码

    JS打印彩色菱形的实例代码

    本文通过一段简单的实例代码给大家介绍js实现打印彩色菱形的方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-08-08
  • JavaScript中的await/async的作用和用法

    JavaScript中的await/async的作用和用法

    await/async 是 ES7 最重要特性之一,它是目前为止 JS 最佳的异步解决方案了。这篇文章主要介绍了JavaScript中的await/async的作用和用法的相关资料
    2016-10-10
  • JavaScript生成一个不重复的ID的方法示例

    JavaScript生成一个不重复的ID的方法示例

    这篇文章主要介绍了JavaScript生成一个不重复的ID的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详解关于微信setData回调函数中的坑

    详解关于微信setData回调函数中的坑

    这篇文章主要介绍了详解关于微信setData回调函数中的坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • JavaScript事件详细讲解

    JavaScript事件详细讲解

    本文给大家介绍js事件详解,涉及到事件流,事件处理,事件对象等方面的知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06

最新评论