<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    憨厚生

    ----Java's Slave----
    ***Java's Host***

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
    轉 http://www.cnitblog.com/yemoo/archive/2007/11/30/37070.html

    JavaScript中有一個call和apply方法,其作用基本相同,但也有略微的區別。

    先來看看JS手冊中對call的解釋:

    call 方法
    調用一個對象的一個方法,以另一個對象替換當前對象。

    call([thisObj[,arg1[, arg2[,   [,.argN]]]]])

    參數
    thisObj
    可選項。將被用作當前對象的對象。

    arg1, arg2,  , argN
    可選項。將被傳遞方法參數序列。

    說明
    call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。

    如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj。

    說明白一點其實就是更改對象的內部指針,即改變對象的this指向的內容。這在面向對象的js編程過程中有時是很有用的。

    引用網上一個代碼段,運行后自然就明白其道理。

    <input type="text" id="myText"   value="input text">
    <script>
        
    function Obj(){this.value="對象!";}
        
    var value="global 變量";
        
    function Fun1(){alert(this.value);}

        window.Fun1();   
    //global 變量
        Fun1.call(window);  //global 變量
        Fun1.call(document.getElementById('myText'));  //input text
        Fun1.call(new Obj());   //對象!
    </script>

    call函數和apply方法的第一個參數都是要傳入給當前對象的對象,及函數內部的this。后面的參數都是傳遞給當前對象的參數。
    運行如下代碼:
    <script>
       
    var func=new function(){this.a="func"}
        
    var myfunc=function(x){
            
    var a="myfunc";
            alert(
    this.a);
            alert(x);
        }
        myfunc.call(func,
    "var");
    </script>

    可見分別彈出了func和var。到這里就對call的每個參數的意義有所了解了。

    對于apply和call兩者在作用上是相同的,但兩者在參數上有區別的。
    對于第一個參數意義都一樣,但對第二個參數:
    apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。

    如 func.call(func1,var1,var2,var3)對應的apply寫法為:func.apply(func1,[var1,var2,var3])

    同時使用apply的好處是可以直接將當前函數的arguments對象作為apply的第二個參數傳入

    posted on 2009-04-01 09:30 二胡 閱讀(217) 評論(0)  編輯  收藏 所屬分類: JS
    主站蜘蛛池模板: 4hu四虎最新免费地址| 日本一区二区三区在线视频观看免费 | 亚洲色成人WWW永久在线观看| 久久久久久亚洲Av无码精品专口 | 四色在线精品免费观看| 在人线av无码免费高潮喷水| 日韩视频在线精品视频免费观看| 免费观看又污又黄在线观看| 亚洲精品国产电影午夜| 亚洲狠狠综合久久| 色噜噜综合亚洲av中文无码| 久久夜色精品国产亚洲AV动态图 | 亚洲色婷婷一区二区三区| 久久精品国产亚洲一区二区三区 | 成人最新午夜免费视频| 最近中文字幕免费mv视频7| 成人毛片免费在线观看| 国产青草视频在线观看免费影院| 四虎永久在线精品免费影视| 又色又污又黄无遮挡的免费视| 亚洲国产天堂久久综合| 国产成人麻豆亚洲综合无码精品| 亚洲人成网77777色在线播放| 亚洲AV无码欧洲AV无码网站| 亚洲成人福利在线观看| 亚洲av无码有乱码在线观看| 边摸边吃奶边做爽免费视频99 | 猫咪免费人成网站在线观看入口 | 亚洲 欧洲 视频 伦小说| 亚洲乱色伦图片区小说 | 亚洲国产精品综合福利专区| 亚洲人成网男女大片在线播放| 亚洲av日韩av天堂影片精品| 亚洲国产精品无码久久SM| 亚洲va久久久噜噜噜久久男同 | 免费h成人黄漫画嘿咻破解版| 亚洲乱码中文字幕手机在线| 亚洲精品蜜桃久久久久久| 久久久久亚洲精品无码蜜桃| 亚洲色一区二区三区四区| 一区二区三区AV高清免费波多|