如何访问地图内的功能?

How to access function inside map?

是的,我知道,有很多关于此的信息,但我无法让它发挥作用。 我试图在 update 函数中访问地图内的函数 checkType,但我得到了众所周知的 TypeError: Cannot read property 'checkType' of undefined

显示一些代码:

function builder() {
return {
    update(data){
        let keys = someFunctionGettinTheKeys();
        let query = keys.map((key) => key + ' = ' . **this.checkType(data[key])**);
        return query;
    },
    checkType(data){
        /*...some code...*/
    }
  }
}

我试过:

我做错了什么?

你能不能不做下面的事情?

function bulider(){
  const checkType = (data) => {
    /* do type check */
    return 'text'
  }
  return {
    update(data) {
      let keys = someFunctionGettinTheKeys()
      let query = keys.map((key) => key + ' = ' + checkType(data[key]))
      return query
    },
    checkType: checkType
  }
}

用法:

const { update } = builder()
const transformedData = update(data)

Array.prototype.map() 采用第二个参数来设置 this 在映射函数中引用的内容,因此将其作为第二个参数传递以保留当前上下文:

arr.map(function(el) {
...
}, this);

您的代码更改 =>

function builder() {
    return {
    update: function() {
      let arr = [1,2,3,4,5,6,7,8,9,10];
      let newArr = arr.map((element) => {
        return this.check(element)
      }, this);
      console.log(newArr)
    },
    check: function(num) {
            return num * 2;
    }
  }
}

builder().update();

问题出在函数调用之前的那个点上。我用“+”替换了那个点,现在它可以工作了。 就这些。尴尬,但真实。