在javascript中,call方法可以用來取代一個物件呼叫一個方法,可以將一個函數的物件上下文從初始化改為新的對象,也就是括號裡面的原本的物件改為call()前面的物件。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
js中call()方法的用法
#1.call方法
語法: call(thisobj,[argq,arg2])
定義:呼叫一個物件的一個方法,以另一個物件取代目前物件
說明:
call方法可以用來取代一個物件呼叫一個方法,call方法可以將一個函數的物件上下文從初始化改為新的對象,也就是括號裡面的原本的物件改為call()前面的物件、即用thisobj取代call前面的東西,最後用thisobj這個物件去執行call前面的方法。
如果沒有提供 thisObj 參數,那麼 Global 物件被用作 thisObj。
一如
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js中call方法的使用</title> </head> <body> <p id="id1">新年</p> </body> </html> <script> function add(a,b){ alert(a+b); } function sub(a,b){ alert(a-b); } document.getElementById("id1").onclick = function(){ add.call(sub,3,1); } </script>
add取代sub ,最總結過輸出
這個範例中的意思就是用add 來取代sub, add.call(sub,3,1) == add(3,1) ,所以運行結果為:alert(4); // 注意:js 中的函數其實是對象,函數名稱是對Function 對象的參考。
【推薦學習:javascript高階教學】
2.apply方法
語法:apply(thisobj ,[argArray])
定義:應用某一個物件的一個方法,用別另一個物件取代目前物件
#說明:
如果argArray 不是一個有效的陣列或不是arguments 對象,那麼將導致一個TypeError。
如果沒有提供 argArray 和 thisObj 任何一個參數,那麼 Global 物件將被用作 thisObj, 並且無法被傳遞任何參數。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js中call方法的使用</title> </head> <body> <p id="id1">新年</p> </body> </html> <script> function Animal(){ this.name = "Animal"; this.showName=function(){ alert(this.name); } } function Cat(){ this.name = "Cat"; } document.getElementById("id1").onclick = function(){ var animal = new Animal(); var cat = new Cat(); // 通过call或apply方法,将原本属于Animal对象的showName方法交给对象call来使用了 animal.showName.apply(cat,[]); animal.showName.call(cat,","); } </script>
注意apply的參數和call方法的參數是不同的,apply是一個陣列
3.call實作js的繼承
#更多程式相關知識,請造訪:程式設計影片! !
以上是javascript的call方法怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!