call及apply的用法理解

在javascript OOP中,我们经常会这样定义:


function cat(){}
  cat.prototype={     
  food:"fish",     
  say: function(){  
         alert("I love "+this.food);    
  }
}
var blackCat = new cat;
blackCat.say();


如果我们有一个对象

whiteDog = {food:"bone"},

我们不想对它重新定义say方法,

那么我们可以通过call或apply用blackCat的say方法:

blackCat.say.call(whiteDog);

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

posted @ 2018-01-03 11:00  小猪宿州  阅读(145)  评论(0编辑  收藏  举报