首页 > 解决方案 > 如何在导出默认值中调用函数内部的另一个函数?

问题描述

export default {
 one: () => {
  //some codes
 },
 two: () => {
  //some codes
  one(); // error
  this.one(); // error
 }
}

我有这样的模块,我想在函数二()中调用函数一()。
但我得到了这样的错误:TypeError: Cannot read property 'one' of undefined
我该如何解决?我想知道原因。

标签: javascriptfunctionmodulees6-modules

解决方案


如果您想为this关键字提供新的上下文,则不应使用箭头功能。

看这个例子,它在方法中使用了一个箭头函数two。它将返回错误,因为this关键字与对象无关,但保留了最后一个函数的上下文。

let obj = {
  one: function() {
    console.log("one");
  },
  two: () => {     // Arrow function
   this.one();
  }
}

obj.two();

如果您使用普通函数,则this关键字将与对象相关:

let obj = {
  one: function() {
    console.log("one");
  },
  two: function() {     // Normal function
   this.one();
  }
}

obj.two();

这是箭头函数和普通函数的主要区别


推荐阅读