groog
@groog
Я только учусь

Почему не получается вызвать метод?

Столкнулся с проблемой, которую не могу решить.
Есть конструктор:
function Constructor(a, b, c){
  this.a = a;
  this.b = b;
  ...
}

Для конструктора есть методы:
Constructor.prototype.method = function(){
  ...
}

Есть функция-фабрика, которая работает не так как хотелось бы:
function init(){
  var arr = [];

  for ... {
    arr.push(new Constructor(a, b, c));
  }

  arr.forEach(function(item){
    item.method();  // в этом месте ошибка TypeError: item.method is not a function
  }
}

Код выполняется в режиме "use sctrict"
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 2
twobomb
@twobomb
init()
Нужно вызывать после описания prototype
Ответ написан
eternalSt
@eternalSt
'use strict'

function Constructor(a, b, c){
  this.a = a;
};

Constructor.prototype.method = function(){
  console.log(`Run method: this.a: ${this.a}`);
};

function init(n){
  var arr = [];

  for(let i = 0; i < n; i++){
    arr.push(new Constructor(i));
  }

  arr.forEach(function(item){
    item.method();
  });
};

init(10);


Работает как надо.

Хотя признаться, я не понял зачем тут два цикла?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы