如何在JavaScript上为map in对象创建非匿名函数

如何在JavaScript上为map in对象创建非匿名函数,javascript,Javascript,嗨,我想要折射我的代码。 我有一个示例对象: class Obj { constructor(){ this.data = [ {'name':'Tom','age':23}, {'name':'John','age':30}, {'name':'Filip','age':32}, ]; this.init(); } init() { this.newData = this.d

嗨,我想要折射我的代码。 我有一个示例对象:

class Obj {
    constructor(){
      this.data = [
        {'name':'Tom','age':23},
        {'name':'John','age':30},
        {'name':'Filip','age':32},
    ];
        this.init();
  }
    init() {
        this.newData = this.data.map(function addYear(person) {
            person.age= person.age + 1;
            return person;
          });
       }
 }
当我尝试时,如何将这个addYear函数放在对象中并声明她 像这样的事情是行不通的:

class Obj {
  //...... old code....
 addYear(person){
    person.age= person.age + 1;
    return person;
 }
 init() {
    this.newData = this.data.map(this.addYear(person)); // this doesn't work 
 }
}

有什么办法可以做到这一点吗?thanx

您需要调用.map对象作为
object=>object
!确保每个函数中都有返回数据

class Obj {
    constructor(){
      this.data = [
        {'name':'Tom','age':23},
        {'name':'John','age':30},
        {'name':'Filip','age':32},
    ];
        return this.init();
  }
 init() {
        this.newData = this.data.map(person => this.addYear(person));
        return this.newData;
}

 addYear(person){
    person.age= person.age + 1;
    return person;
 }
 }
 console.log(new Obj());
 //result     
 0: Object
         age:24
         name:"Tom"
 1: Object
         age:31
         name:"John"
 2: Object
         age:33
         name:"Filip"

首先,您不需要使用
.map()
。你们都在改变原始对象,然后用相同对象的新数组替换它们。不妨使用
.forEach()
,并删除
返回人
this.newData=
。类的方法通常会对类的某些成员进行操作,比如
init()
如何对
this.data
进行操作。如果这是一个用于
person
对象的实用程序,那么它可能应该是一个静态方法。或者你应该有一个
Person
类,它有一个
addYear
方法。谢谢。为什么要在构造函数中放置return语句?如果不放置return语句,将得到旧对象和更新对象!全靠你了