Как получить доступ к функции-прототипу в цикле массива - PullRequest
0 голосов
/ 06 июня 2018

У меня следующая структура объекта (просто образец объекта):

var Sample = function Sample (name)
{ this.init(name); };

Sample.prototype.init = function (name)
{ this.name_ = name; }

Sample.prototype.getName = function ()
{ return 'The name is '+this.name_; }

var obj = new Sample();
console.log ( obj.getName() );

Когда я делаю что-то, как указано выше, это работает хорошо и печатает внутри консоли, как и должно быть.Но когда у меня есть коллекция массивов, я не могу получить доступ к функции getName().Например:

var biblio = [];

biblio.push(new Sample('A'));
biblio.push(new Sample('B'));
biblio.push(new Sample('C'));
biblio.push(new Sample('D'));

for ( var i = 0; i < biblio.lenght; i++ )
{ console.log ( biblio[i].getName() ); }

Для приведенного выше случая я всегда получаю undefined.Но за пределами for используется что-то вроде biblio[0].getName(), оно работает хорошо.

Как я могу получить доступ к функции объекта в цикле for?

1 Ответ

0 голосов
/ 06 июня 2018

Просто исправьте это biblio.length и оно будет работать в соответствии с вами !.

var Sample = function Sample (name)
{ this.init(name); };

Sample.prototype.init = function (name)
{ this.name_ = name; }

Sample.prototype.getName = function ()
{ return 'The name is '+this.name_; }

var obj = new Sample();
console.log ( obj.getName() );

var biblio = [];

biblio.push(new Sample('A'));
biblio.push(new Sample('B'));
biblio.push(new Sample('C'));
biblio.push(new Sample('D'));

for ( var i = 0; i < biblio.length; i++ )
{ console.log ( biblio[i].getName() ); }
...