先明白存在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了