JS中關於call() 和apply()的用法

先明白存在call和apply的緣由,才能記得牢一點。出現call()和apply()是爲了將類指針的this指向新的對象。app

因此,能夠看出call和apply是爲了動態改變this而出現的,當一個object沒有某個方法,可是其餘的有,咱們能夠藉助call或apply用其它對象的方法來操做。this

爲了方便記憶:spa

貓吃魚,狗吃肉,奧特曼打小怪獸。prototype

有天狗想吃魚了指針

貓.吃魚.call(狗,魚)code

狗就吃到魚了對象

貓成精了,想打怪獸blog

奧特曼.打小怪獸.call(貓,小怪獸)it

就這樣記住了。io

舉個栗子:

1 function cat(){}
2 cat.prototype = {food:'fish',say:function(){alert('I like eat ' +this.food)}
4 
5 var blackCat = new cat();
6 blackCat.say();

後來狗來了,狗比較懶,想直接調用cat的say()方法。

1 var whiteDog = {food:'bone'};
2 blackCat.say.call(whiteDog)  //這時候this就指向whiteDog了
相關文章
相關標籤/搜索