1、方法定義
call方法:
語法:call([thisobj[,arg1[, arg2[, [,.argn]]]]])
定義:呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。
說明:
call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。
如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。
定義:應用某一物件的乙個方法,用另乙個物件替換當前物件。
說明:
如果 argarray 不是乙個有效的陣列或者不是 arguments 物件,那麼將導致乙個 typeerror。
如果沒有提供 argarray 和 thisobj 任何乙個引數,那麼 global 物件將被用作 thisobj, 並且無法被傳遞任何引數。
2、常用例項
function add(a,b)
function sub(a,b)
add.call(sub,3,1);
這個例子中的意思就是用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以執行結果為:alert(4); // 注意:js 中的函式其實是物件,函式名是對 function 物件的引用。
function animal()
} function cat()
var animal = new animal();
var cat = new cat();
//輸入結果為"cat"
animal.showname.call(cat,",");
call 的意思是把 animal 的方法放到cat上執行,原來cat是沒有showname() 方法,現在是把animal 的showname()方法放到 cat上來執行,所以this.name 應該是 cat
實現繼承
function animal(name)}
function cat(name)
var cat = new cat("black cat");
cat.showname();
animal.call(this) 的意思就是使用 animal物件代替this物件,那麼 cat中不就有animal的所有屬性和方法了嗎,cat物件就能夠直接呼叫animal的方法以及屬性了
多重繼承
function class10()
}function class11()
}function class2()
JS中Apply和Call的用法
1 函式層面 obj.call obj1,argument1,argument2,這兩個函式都是使用obj物件來替換obj1來執行對應的函式 這個可用於物件的繼承 例如 function add a,b function sub a,b add.call sub,a,b 使用add函式來替代sub進...
js中call與apply用法
兩者的格式和引數定義 call thisarg arg1,arg2,引數列表,arg1,arg2,上面兩個函式內部的this指標,都會被賦值為thisarg,這可實現將函式作為另外乙個物件的方法執行的目的 一 call 的簡單用法 首先,我們先看個簡單的例子 call 然後,執行結果如下 globa...
js中call與apply用法
兩者的格式和引數定義 call thisarg arg1,arg2,引數列表,arg1,arg2,上面兩個函式內部的this指標,都會被賦值為thisarg,這可實現將函式作為另外乙個物件的方法執行的目的 一 call 的簡單用法 首先,我們先看個簡單的例子 call 然後,執行結果如下 globa...