Как добавить метод к объекту массива, который был создан функцией конструкции - PullRequest
3 голосов
/ 30 марта 2020

пытается решить следующую проблему.

У меня есть такая строительная функция, как:

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 () к 'family', который будет использовать переменную 'firstName' из функции конструктора, чтобы выбрать, кто будет ездить

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Используйте другой класс 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 голосов
/ 30 марта 2020

// Сначала вы должны удалить запятую из вашей функции Person и использовать точку с запятой (;)

// Просто создать функцию

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

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

// Результат Drive is John

// или вы можете напрямую вызывать функцию драйвера как метод любого семейного объекта, например

driver.call(family[0])

// Выше кода даст тот же результат, пожалуйста, попробуйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...