如何在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语句,将得到旧对象和更新对象!全靠你了