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