如何理解JS中的call及apply

2021-09-23 22:25:20 字數 571 閱讀 2292

八個方面深度解析前端知識/技能,本篇分享的是:

1.背景介紹

1.call()方法呼叫具有給定this值的函式和單獨提供的引數。說白了就是改變this的指向

1.比如有段這樣的函式:

function cat();

blackcat.say.call(whitedog);

2.二者的區別

相同點:兩個方法產生的作用是完全一樣的

不同點:方法傳遞的引數不同

獲取陣列中的最大值和最小值

var numbers = [5, 458 , 120 , -215 ];

maxinnumbers = math.max.call(math,5, 458 , 120 , -215); //458

6.擴充套件思考

bind() 方法

8.更多討論

1.朱芳山:如果不用this還能不能使用call方法

分享人:做過demo,不用this,引用call等方法是無法借用函式

2.莊引:es6中還有類似的替代方法嗎?

龔家豪:createclass()

3.龔家豪:實際的應用場景

如何理解和熟練運用js中的call及apply?

function cat cat.prototype var blackcat new cat blackcat.say 用的比較多的,通過document.getelementsbytagname選擇的dom 節點是一種類似array的array。它不能應用array下的push,pop等方法。我...

如何理解和熟練運用js中的call及apply?

obj.call thisobj,arg1,arg2,兩者作用一致,都是把obj 即this 繫結到thisobj,這時候thisobj具備了obj的屬性和方法。或者說thisobj 繼承 了obj的屬性和方法。繫結後會立即執行函式。function add j,k function sub j,k...

如何理解和熟練運用js中的call及apply?

obj.call thisobj,arg1,arg2,兩者作用一致,都是把obj 即this 繫結到thisobj,這時候thisobj具備了obj的屬性和方法。或者說thisobj 繼承 了obj的屬性和方法。繫結後會立即執行函式。function add j,k function sub j,k...