javascript call方法的理解。

來源:互聯網
上載者:User

JS手冊中對call的解釋:

--------------------------

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

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

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

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

說明
call 方法可以用來代替另一個對象調用一個方法。
call 方法可將一個函數的物件內容從初始的上下文改變為由 thisObj 指定的新對象。
如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。

 

-------------------------------------------

以下是例子。注釋都是自己對call的理解。

<input type="text" id="myText"   value="input text">
<script>
    //類
    function Obj(){ this.value="對象!"; }
   
    var value="global 變數";
   
    //方法。作用就是使出全域變數value
    function fun1(){ alert(this.value); }
   
    window.fun1();
    //alert:global 變數
    //當前視窗對象調用fun1,fun1方法中的this指向的是window。
    //window的value就是全域變數value。所以輸出的是“global 變數”
   
    fun1.call(window);
    //alert:global 變數
    //fun1.call(window);  call中傳入的對象參數還是window。和調用他的對象一樣。所以輸出的還是“global 變數”。
   
   
    var txt=document.getElementById('myText');
    fun1.call(txt);
    //alert:input text
    //call中傳入的是text對象。
    //fun1.call(txt);也等於 window.fun1.call(txt); 通過call 來改變調用fun1方法的對象。
    //也就是說,方法體內的this由原來指向的window改變為指向的是txt對象,
    //也可以被認為fun1成了對象txt的一個方法。或者說給txt增加了一個fun1的方法。方法內執行的是輸入txt的value。alert出來的也就是txt的value
   
    //
//    txt.printTxt=function(){
//        alert(this.value)
//    }
//    txt.printTxt();
    fun1.call(new Obj());  
    //alert:對象!
    //測試fun1的this指向的是類Obj的一個執行個體對象。alert出的Obj的屬性value值。
   
</script>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.