最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2007年01月22日 00:00:00   作者:  
昨天阿丹傳了一個(gè)javascript中的重載例子給我,感覺不錯(cuò).雖然到現(xiàn)在還是不太明白.怎么實(shí)現(xiàn)的.但還是貼出來.
實(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參考中的說明:調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是沒有示例 
apply方法JScript參考中的說明:應(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)繼承的例子.呵呵..也一并貼出來.這個(gè)例子比較簡(jiǎn)單.就算是由淺入深吧
<script language="javascript" type="text/javascript">

      function father(){//父類

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

             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(){                      //私有方法,子類不能調(diào)用

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

             }

      }

      

      function father2(){

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

      }

      

      function suber(){//子類

             father.call(this);//通過這一句來繼承父類(father)類的可見變量及方法(this)

      }

      

      function sun(){

             suber.call(this);

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

      }

      

      var mySuber=new suber();

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

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

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

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

      

      var mySun=new sun();

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

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

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

             alert(mySun.email);

</script>

相關(guān)文章

最新評(píng)論

汕头市| 法库县| 井研县| 凤台县| 泰宁县| 朔州市| 库车县| 来宾市| 仁布县| 嘉鱼县| 宜州市| 淮南市| 新闻| 兴仁县| 望城县| 秭归县| 读书| 咸宁市| 定远县| 浪卡子县| 渭南市| 舒城县| 丰宁| 阳朔县| 平阴县| 呼图壁县| 衡东县| 澳门| 漳浦县| 阿拉善右旗| 岳阳市| 天祝| 兴业县| 东乡族自治县| 潮州市| 青冈县| 鄄城县| 威信县| 沙田区| 抚州市| 凤凰县|