【问题标题】:How to store an objects in array after method in my class如何在我的类中的方法之后将对象存储在数组中
【发布时间】:2021-03-27 16:13:00
【问题描述】:

请看下面我的代码。

class User {
  
  constructor(name, email) {
    this.name = name;
    this.email = email;
   
  }
  
  addUser() {
    users.push(this.name, this.email)
  }
  
}

const userOne = new User ('John', 'john@mail.com');
const userTwo = new User ("Alan", "alan@mail.com");

let users = [];

userOne.addUser();
userTwo.addUser();

在 addUser 方法之后,我有一个包含姓名和电子邮件的数组,但我想要一个包含以下对象的数组

users = [
{ name: 'John', email: 'john@mail.com' }
{ name: 'Alan', email: 'alan@mail.com' }
]

我的方法 addUser 应该如何在我的原型中查看,变量用户是否在正确的位置或者可以存储在 Class 的某个地方? 提前致谢

【问题讨论】:

  • 为什么不直接写users = [userOne, userTwo];
  • 谢谢,但我正在寻找将原型作为模板的方法
  • 拥有一个改变全局变量的方法是一种反模式。这违背了 OOP 原则。

标签: javascript class object oop


【解决方案1】:

您将对象属性一个接一个地推送,而不是作为一个对象一起推送。

试试这个addUser 方法:

addUser() {
  users.push({name: this.name, email: this.email})
}

【讨论】:

  • 感谢您的帮助。这就是我一直在寻找的
【解决方案2】:

你只需要推送每个礼节

users.push({name: this.name, email: this.email})

如果您想自动执行此操作,您可以使用:

users.push(Object.assign({}, this))

或者你云只是传递整个对象:

users.push(this)

无论如何,我建议不要全局使用用户。

【讨论】:

  • 感谢您的帮助,两种方法都适合我!
猜你喜欢
  • 2014-04-12
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
相关资源
最近更新 更多