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

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

 更新時(shí)間:2007年01月22日 00:00:00   作者:  
昨天阿丹傳了一個(gè)javascript中的重載例子給我,感覺不錯(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參考中的說明:調(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)繼承的例子.呵呵..也一并貼出來(lái).這個(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);//通過這一句來(lái)繼承父類(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)論

将乐县| 汝州市| 大宁县| 深州市| 平塘县| 江城| 新巴尔虎右旗| 治县。| 高淳县| 烟台市| 蕲春县| 荔浦县| 建宁县| 靖西县| 七台河市| 鄱阳县| 嘉善县| 大连市| 莲花县| 枣阳市| 门源| 晋江市| 独山县| 彭山县| 翼城县| 海城市| 涪陵区| 丹巴县| 莲花县| 松溪县| 醴陵市| 兴国县| 中阳县| 青铜峡市| 通城县| 泰和县| 临洮县| 昌宁县| 伊宁县| 顺义区| 芒康县|