實(shí)例
call() 方法
call() 簡(jiǎn)單用法: 傳入指定對(duì)象闸天,改變 this 指向
window.color = 'red';
document.color = 'yellow';
let obj = {
color: 'blue'
};
let changeColor = function() {
console.log(this.color);
}
changeColor.call(); //red (默認(rèn)傳遞 window對(duì)象 作為參數(shù))
changeColor.call(window); //red
changeColor.call(document); //yellow
changeColor.call(this); //red (當(dāng)前位置this指向window對(duì)象)
changeColor.call(obj); //blue
apply() 方法
apply() 簡(jiǎn)單用法: 傳入指定對(duì)象碗淌,改變 this 指向
window.number = 'one';
document.number = 'two';
var obj = { number: 'three' };
function changeNumber(){
console.log(this.number);
}
changeNumber.apply(); //one (默認(rèn)傳遞 window對(duì)象 作為參數(shù))
changeNumber.apply(window); //one
changeNumber.apply(document); //two
changeNumber.apply(this); //one (當(dāng)前位置this指向window對(duì)象)
changeNumber.apply(obj); //three
區(qū)別
call() 和 apply() 兩個(gè)方法的第一個(gè)參數(shù)都是將傳入的指定作為當(dāng)前的this對(duì)象业栅,而不同的是其它參數(shù)傳入的形式。
- call():call(this對(duì)象, 參數(shù)1, 參數(shù)2, 參數(shù)3...)
- apply(): apply(this對(duì)象, [參數(shù)1, 參數(shù)2, 參數(shù)3...])