亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用javascript中的call實(shí)現(xiàn)繼承

 更新時(shí)間:2007年01月22日 00:00:00   作者:  
昨天阿丹傳了一個(gè)javascript中的重載例子給我,感覺(jué)不錯(cuò).雖然到現(xiàn)在還是不太明白.怎么實(shí)現(xiàn)的.但還是貼出來(lái).
實(shí)現(xiàn)setTimeout傳object對(duì)象
看以下代碼實(shí)現(xiàn)向里面的function 傳參數(shù)
<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參考中的說(shuō)明:調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是沒(méi)有示例 
apply方法JScript參考中的說(shuō)明:應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。apply([thisObj[,argArray]]) 
實(shí)際上這兩個(gè)的作用幾乎是相同的,要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg參數(shù)可以是變量,而apply([thisObj[,argArray]])中的參數(shù)為數(shù)組集合。 

今早又看到一篇利用call實(shí)現(xiàn)繼承的例子.呵呵..也一并貼出來(lái).這個(gè)例子比較簡(jiǎn)單.就算是由淺入深吧
<script language="javascript" type="text/javascript">

      function father(){//父類(lèi)

             var self=this;                                  //私有變量,子類(lèi)里不會(huì)繼承!

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

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

             

             this.author="xling";

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

                   alert("該方法位于父類(lèi) :" + msg + "\n" + self.author);

             }

             

             var test2=function(){                      //私有方法,子類(lèi)不能調(diào)用

                   alert("這個(gè)方法是父類(lèi)的私有方法");

             }

      }

      

      function father2(){

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

      }

      

      function suber(){//子類(lèi)

             father.call(this);//通過(guò)這一句來(lái)繼承父類(lèi)(father)類(lèi)的可見(jiàn)變量及方法(this)

      }

      

      function sun(){

             suber.call(this);

             father2.call(this);//和上面的一句放在一起,實(shí)現(xiàn)多重繼承!爽??!

      }

      

      var mySuber=new suber();

             mySuber.test("參數(shù)是從子類(lèi)的實(shí)例里傳入的");

             //mySuber.test2(); //這一句會(huì)發(fā)生錯(cuò)誤碼,因?yàn)閠est2是父類(lèi)的私有類(lèi)

             alert("父類(lèi)的私有變量,子類(lèi)不能讀取:" + mySuber.var_private);

             alert("父類(lèi)的公有變量,子類(lèi)可以讀取" + mySuber.var_public);

      

      var mySun=new sun();

             mySun.test("這個(gè)是從孫子級(jí)的實(shí)例里傳入的參數(shù)");

             alert("父類(lèi)的私有變量,子類(lèi)不能讀取:" + mySun.var_private);

             alert("父類(lèi)的公有變量,子類(lèi)可以讀取" + mySun.var_public);

             alert(mySun.email);

</script>

相關(guān)文章

最新評(píng)論