快速掌握javascript的apply()和call()方法
導讀:
1.什麼是apply()和call()
2.什麼時候使用apply()和call()
3.apply()和call()的唯一不同
1.什麼是apply()和call()
<1.apply()和call()是函式自帶的兩個函式,二者作用一致。
<2.作用:改變方法中的this。例:say.call(小怪獸),將方法say()中的this指向物件‘小怪獸’
2.什麼時候使用apply()和call()
在js物件導向程式設計中,我們經常這樣定義:
function cat() {
}
cat.prototype = {
food : 'jerry',
say : function () {
console.log('I like '+ this.food);
}
};
let cat_tom = new cat();
cat_tom.say(); // I like jerry
假如:有一個物件 mouse = {food:'tom'}
我們不想對它mouse重新定義say方法,那麼我們可以通過call或apply來使用cat_tom的say方法,如下:
我們不想對它mouse重新定義say方法,那麼我們可以通過call或apply來使用cat_tom的say方法,如下:
let mouse = {food:'tom'};
cat_tom.say.call(mouse); //I like tom
cat_tom.say.apply(mouse); //I like tom
所以,可以看出call和apply是為了動態改變this而出現的;
當一個object沒有某個方法,但是其他的物件有,我們可以藉助call或apply用其它物件的方法來操作。
3.apply()和call()的唯一區別
- apply()把引數打包成Array再傳入;
- call()把引數按順序傳入。
比如呼叫Math.max(1, 2, 3),分別用apply()和call()實現如下:
Math.max.apply(null, [1, 2, 3]); // 3
Math.max.call(null, 1, 2, 3); // 3
相關文章
- 快速理解JavaScript中call和apply原理JavaScriptAPP
- JavaScript中的call()和apply()JavaScriptAPP
- 詳解 JavaScript的 call() 和 apply()JavaScriptAPP
- [譯] Javascript: call()、apply() 和 bind()JavaScriptAPP
- JS中的call()和apply()方法JSAPP
- JavaScript中call,apply,bind方法的總結。JavaScriptAPP
- JavaScript中call,apply,bind方法的總結JavaScriptAPP
- 對javascript中的call()和apply()的理解JavaScriptAPP
- JavaScript函式的apply方法與call方法淺析JavaScript函式APP
- Javascript - apply、call、bindJavaScriptAPP
- 談談JavaScript中的call、apply和bindJavaScriptAPP
- 淺談JavaScript中的apply、call和bindJavaScriptAPP
- 【轉】JS中的call()和apply()方法JSAPP
- 簡單快速理解js中的this、call和applyJSAPP
- JavaScript 中的 apply、call、bindJavaScriptAPP
- javascript的call apply和new原理剖析 [手寫]JavaScriptAPP
- JavaScript-apply、bind、callJavaScriptAPP
- this、call和applyAPP
- JS中的call()方法和apply()方法用法總結JSAPP
- javascript -- apply/call/bind的區別JavaScriptAPP
- JavaScript 深入之 call 和 apply 的模擬實現JavaScriptAPP
- JavaScript 之 call和apply,bind 的模擬實現JavaScriptAPP
- JavaScript深入之call和apply的模擬實現JavaScriptAPP
- JavaScript 深入之call和apply的模擬實現JavaScriptAPP
- 徹底理解了call()方法,apply()方法和bind()方法APP
- JavaScript重識bind、call、applyJavaScriptAPP
- this, call, apply 和 bindAPP
- JavaScript進階之模擬call,apply和bindJavaScriptAPP
- 函式式JavaScript(3):.apply()、.call() 和arguments物件函式JavaScriptAPP物件
- call()和apply()方法使用程式碼例項APP
- JS中的call、apply、bind方法JSAPP
- Javascript - 全面理解 caller,callee,call,applyJavaScriptAPP
- javascript 物件導向學習(三)——this,bind、apply 和 callJavaScript物件APP
- JavaScript專題之模擬實現call和applyJavaScriptAPP
- javascript函數語言程式設計 : call 和 applyJavaScript函數程式設計APP
- javascript基礎(函式屬性arguments,方法:call,apply)(二十)JavaScript函式APP
- 新手理解 apply 和 callAPP
- JavaScript之call, apply, bind, new的實現JavaScriptAPP