如何在lodash中的嵌套函数内调用父函数?

时间:2015-09-17 10:06:11

标签: javascript lodash

请考虑以下代码示例:

var helper = {
  isCheetah: function(a) {
    return a === "Cheetah";
  },

  isLepoard: function(a) {
    return a === "Lepoard";    
  },

  researchedSpecies: function(a) {
    return this.isCheetah(a) || isLepoard(a);
  },

  getResearchedSpecies: function(allSpecies) {
    return _.filter(allSpecies, this.researchedSpecies);
  }
};

// prints "isCheetah: true" 
console.log("isCheetah:" + helper.isCheetah("Cheetah"));

// complains "this.isCheetah is not a function
helper.getResearchedSpecies(["Zebra", 
                             "Cheeta", 
                             "Lepoard",
                             "Godzilla"]);

以下是jsbin的实时代码:http://jsbin.com/liyohumewe/edit?js,console

在没有lodash的情况下,这在正常功能中正常工作。将lodash扔进mixute并且嵌套级别函数不再起作用。我想这是因为this关键字在被lodash调用时,不再引用父级,而是转向lodash(这是正确的吗?)。

无论如何,我该如何解决这个问题?如何在lodash调用的嵌套函数中调用父函数?

1 个答案:

答案 0 :(得分:1)

根据OP的要求,从评论中复制:

使用this将函数引用绑定到Function#bind

Here is an updated JSBin.

请参阅this MDN documentation了解您需要执行此操作的原因。