JS中关于call() 和apply()的用法

先明白存在call和apply的原因,才能记得牢一点。出现call()和apply()是为了将类指针的this指向新的对象。

所以,可以看出call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。

为了方便记忆:

猫吃鱼,狗吃肉,奥特曼打小怪兽。

有天狗想吃鱼了

猫.吃鱼.call(狗,鱼)

狗就吃到鱼了

猫成精了,想打怪兽

奥特曼.打小怪兽.call(猫,小怪兽)

就这样记住了。

举个栗子:

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了

posted on 2018-02-24 15:29  Joker陈  阅读(192)  评论(0编辑  收藏  举报

导航