从实例方法调用实例方法

时间:2016-05-05 07:45:05

标签: javascript node.js methods mongoose

我想从method2中调用method1。不知道如何访问它。我收到了:

  

TypeError:无法调用方法' method1'未定义的

TestSchema.methods = {
  method1: () => {
      return true;
  },
  method2: () => {
    if(this.method1()){
        console.log('It works!');
    }
  }
};

2 个答案:

答案 0 :(得分:3)

请勿使用箭头功能。它使用函数定义的词法范围中的this上下文。在您使用的strict mode中未定义。

使用常规功能:

TestSchema.methods = {
  method1: function() {
      return true;
  },
  method2: function() {
    if(this.method1()){
        console.log('It works!');
    }
  }
};

然后确保将该函数作为对象的方法调用:

TestSchema.methods.method2();

您可以找到有关箭头函数的更多解释,如方法here

答案 1 :(得分:0)

仅因箭头功能而发生此错误。箭头函数表达式不绑定其自己的thisargumentssupernew.target

此外,您不应使用function关键字来解决此问题。最好的解决方案是使用Shorthand method names

TestSchema.methods = {
  method1(){
    return true;
  },
  method2(){
    if (this.method1()) {
      console.log('It works!');
    }
  }
};
TestSchema.methods.method2();