如何将一个方法添加到由构造函数创建的数组对象中

3
尝试解决以下问题。
我有一个类似于下面的构造函数:
```python def construction_function(): ```
function Person (name){
  this.firstName = name;
}

然后我创建了一些对象:

var myFather = new Person("John");
var myMother = new Person("Mary");
var myChild = new Person ("Sonny");

最后将它们连接在一起:

var family = [myFather, myMother, myChild];

现在我想给“家庭”添加一个名为driver()的方法,该方法将使用构造函数中的“firstName”变量来选择谁驾驶。
2个回答

1

使用另一个名为 Family 的类,并在其中添加一个 setDriver 方法:

function Person (name){
  this.firstName = name
}

function Family (members){
  this.members = members;
  this.driver = members[0];
  this.setDriver = function(name){
    this.driver = this.members.filter(member => member.firstName == name)[0]
  }
}

var myFather = new Person("John");
var myMother = new Person("Mary");
var myChild = new Person ("Sonny");

var family = new Family([myFather, myMother, myChild]);
console.log(family.driver)

family.setDriver("Sonny")
console.log(family.driver)


0

// 首先,您应该从您的Person函数中删除逗号,并使用分号(;)

// 只需创建函数

function driver(firstName = this.firstName) {
    console.log(`Drive is ${firstName}`)
}

driver.call(this, family[0].firstName)

// 结果驱动是约翰

// 或者您可以直接将驱动程序函数作为任何家庭对象的方法调用,例如

driver.call(family[0])

// 上面的代码将产生相同的结果,请尝试一下


我认为这段代码没有多大意义,就像编写一个不相关的函数一样,它会显示传递给它的任何变量。 - Anurag Srivastava
// 首先,您应该从Person函数中删除逗号,并使用分号(;) 感谢指出。已经更正了! - Dariusz Legizynski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接