loops - Javascript: Call method on object in array of objects - Stack Overflow

I created a class with a method:class MyClass{myMethod(){return ...;}}After that I push every instance

I created a class with a method:

class MyClass{

myMethod(){
    return ...;
}}

After that I push every instance of that class to an array:

let myList = [];
myList.push(myClass)

How can I call myMethod() within a loop? This code fails:

for (var i = 0; myList.length; i++) {
    myList[i].myMethod();
}

Uncaught TypeError: Cannot read property 'myMethod' of undefined

Thx, piccus

I created a class with a method:

class MyClass{

myMethod(){
    return ...;
}}

After that I push every instance of that class to an array:

let myList = [];
myList.push(myClass)

How can I call myMethod() within a loop? This code fails:

for (var i = 0; myList.length; i++) {
    myList[i].myMethod();
}

Uncaught TypeError: Cannot read property 'myMethod' of undefined

Thx, piccus

Share Improve this question asked May 24, 2017 at 6:04 piccuspiccus 1712 silver badges9 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 2

You should crate an instance with new operator in order to call a method:

class myClass{
  myMethod(){
    console.log('hi');
  }
}

let myList = [];
myList.push(new myClass())
myList.push(new myClass())
myList.push(new myClass())
myList.push(new myClass())
myList.push(new myClass())

for (var i = 0; i < myList.length; i++) {
    myList[i].myMethod();
}

If you need to call this method without instance, define it as static:

class myClass{
  static myMethod(){ // notice static
    console.log('hi');
  }
}

let myList = [];
myList.push(myClass)
myList.push(myClass)
myList.push(myClass)
myList.push(myClass)
myList.push(myClass)

for (var i = 0; i < myList.length; i++) {
    myList[i].myMethod();
}

You could keep track of each instance of MyClass by pushing this into myList when the constructor is called. That way you don't have to keep remembering to push into myList each time you construct a new MyClass instance.

var myList = [];

function MyClass (theAnswer) {
  this.theAnswer = theAnswer;  
  this.getTheAnswer = function () {
    console.log(this.theAnswer);
  };
  
  // Keep track of all instances of MyClass here.
  myList.push(this);
}

new MyClass(42);
new MyClass(null);
new MyClass('Dunno');

for (var i = 0; i < myList.length; i++) {
    myList[i].getTheAnswer();
}

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745636033a4637395.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信