快速掌握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() 和 bind()JavaScriptAPP
- JavaScript中call,apply,bind方法的總結。JavaScriptAPP
- 對javascript中的call()和apply()的理解JavaScriptAPP
- Javascript - apply、call、bindJavaScriptAPP
- 談談JavaScript中的call、apply和bindJavaScriptAPP
- 淺談JavaScript中的apply、call和bindJavaScriptAPP
- JavaScript 中的 apply、call、bindJavaScriptAPP
- 簡單快速理解js中的this、call和applyJSAPP
- javascript的call apply和new原理剖析 [手寫]JavaScriptAPP
- JavaScript-apply、bind、callJavaScriptAPP
- JS中的call()方法和apply()方法用法總結JSAPP
- JavaScript 深入之 call 和 apply 的模擬實現JavaScriptAPP
- JavaScript重識bind、call、applyJavaScriptAPP
- this, call, apply 和 bindAPP
- JavaScript進階之模擬call,apply和bindJavaScriptAPP
- javascript 物件導向學習(三)——this,bind、apply 和 callJavaScript物件APP
- JavaScript專題之模擬實現call和applyJavaScriptAPP
- JavaScript之call, apply, bind, new的實現JavaScriptAPP
- 新手理解 apply 和 callAPP
- call,apply和bind的區別APP
- 理解JS中的call、apply、bind方法(********************************************************JSAPP
- JavaScript深入理解系列:call與applyJavaScriptAPP
- javascript中call()、apply()、bind()的用法終於理解JavaScriptAPP
- JavaScript中apply、call、bind的區別與用法JavaScriptAPP
- js中call,apply和bind方法的區別和使用場景JSAPP
- JavaScript自我實現系列(2):call,apply,bindJavaScriptAPP
- javascript之模擬call以及apply實現JavaScriptAPP
- [譯] 如何在 JavaScript 中使用 apply(?),call(?),bind(➰)JavaScriptAPP
- 跟我學習javascript的call(),apply(),bind()與回撥JavaScriptAPP
- js的繼承方法小結(prototype、call、apply)JS繼承APP
- 重寫JS中的apply,call,bind,new方法JSAPP
- this、apply、call、bindAPP
- 【譯】理解this及call,apply和bind的用法APP
- apply 、call 以及 bind 的使用和區別APP
- apply,call,bind的用法APP
- 前端戰五渣學JavaScript——call、apply以及bind前端JavaScriptAPP