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"
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 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);


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

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

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

Войти через TM ID
Похожие вопросы
Biganto Москва
от 130 000 до 130 000 руб.
от 2 500 до 4 000 usd.
HTML Academy Москва
от 85 000 до 100 000 руб.
16 авг. 2018, в 09:18
30000 руб./за проект
16 авг. 2018, в 08:17
600 руб./в час
15 авг. 2018, в 23:38
300 руб./за проект