Использование apply () для метода класса - PullRequest
0 голосов
/ 27 мая 2018

Можно ли вызвать метод apply () для метода класса?В настоящее время я получаю неопределенное значение.Я ищу вывод, чтобы прочитать «Тодд - отец Джейсона, Карлы и Дэвида».

class Person {
  constructor(name) {
    this._name = name;
  }
  get name() {
    return this._name;
  }
  set name(newValue) {
    this._name = newValue;
  }
  info() {
    return this._name + " is the father of " + children;
  }
}

var children = ["Jason ", " Karla", " and David"];

var e1 = new Person("Todd");

var ref = e1.info.apply(e1.name, children)

document.querySelector(".test").innerHTML = ref; 

1 Ответ

0 голосов
/ 27 мая 2018

Чтобы использовать .apply(), вам нужно передать ему два аргумента.Первый - это объект, для которого вы хотите вызвать метод.В вашем случае выше, это будет e1.Второй аргумент - это массив аргументов, которые вы хотите передать методу.

Итак, вы можете сделать:

var ref = e1.info.apply(e1, children);

Но ваш метод info не совсем правильный.Если вы собираетесь передать аргументы в info() с помощью .apply(), то вам, вероятно, следует использовать эти аргументы и то, как они написаны сейчас, он пытается добавить глобальный массив в строку, что по нескольким причинам неверно.

Возможно, вы хотите, чтобы информация была такой:

info(...args) {
   return this._name + " is the father of " + args.join(",");
}
...