js中call和apply用法

2021-07-14 02:55:38 字數 1389 閱讀 1037

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...