相同點:這兩個方法的作用是一樣的。都是在特定的作用域中呼叫函式,等於設定函式體內this物件的值,以改變函式執行的作用域。
//例1
window.number =
'1';
document.number =
'2';
var s1 =
;function
changecolor()
changecolor.()
;//1 (預設傳參)
changecolor.
(window)
;//1
changecolor.
(document)
;//2
changecolor.
(this);
//1 changecolor.
(s1)
;//3
<
/script>
//例2
function
pet(words)
}function
dog(words)
var dog =
newdog
('xiao');
dog.
speak()
;
2.call()方法//例1
window.color =
'red'
; document.color =
'yellow'
;var s1 =
;function
changecolor()
changecolor.
call()
;//red (預設傳遞引數)
changecolor.
call
(window)
;//red
changecolor.
call
(document)
;//yellow
changecolor.
call
(this);
//red
changecolor.
call
(s1)
;//blue
<
/script>
如果argarray不是乙個有效陣列或不是arguments物件,那麼將導致乙個typeerror,如果沒有提供argarray和thisobj任何乙個引數,那麼global物件將用作thisobj。
call方法可以用來代替另乙個物件呼叫乙個方法,call方法可以將乙個函式的物件上下文從初始的上下文改變為thisobj指定的新物件,如果沒有提供thisobj引數,那麼global物件被用於thisobj。
function
add(c,d)
var s =
; console.
log(add.
call
(s,3,4
));// 1+2+3+4 = 10
console.
log(add.
(s,[5,
6]))
;// 1+2+5+6 = 14
js中call和apply用法
1 方法定義 call方法 語法 call thisobj arg1 arg2 argn 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。說明 call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。如果沒...
JS中apply和call的區別
聯絡 obj 這個物件將代替 function類裡this物件,也即 function類 函式 裡的this不在是指 function 本身,而是obj args 這個是陣列型別的引數,它將作為引數傳給function args arguments 結果是還是執行 function 類方法 函式 的...
js中的apply和call函式
主要我是要解決一下幾個問題 obj 這個物件將代替function類裡this物件 args 這個是陣列,它將作為引數傳給function args arguments function.call obj,param1 param2 paramn obj 這個物件將代替function類裡this物...