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了
相关文章
相关标签/搜索