调用对象/函数中的所有函数

时间:2015-07-31 10:24:26

标签: javascript jquery function oop

我正在尝试在JavaScript中执行一些OOP,并且我正在尝试动态设置某些内容,以便可以调用给定对象或函数中的所有函数。

我有一个循环,每秒都调用一个函数,但在某些时候该函数需要做不同的事情。所以我想我每秒都会调用该函数,然后使用'prototype'属性为其添加额外的函数。

基本上这是一个无限循环,不断调用一个函数,并且在调用函数时根据用户交互,它可能需要执行不同的函数。

var MAIN = function() {
var self = this;

this.Tick = 1;
this.Timer = function(){};

this.StartTimer = function(loop, interval) {
    self.Timer = setInterval(loop, interval);
}

this.StopTimer = function() {
    clearInterval(self.Timer);  
    self.Tick = 1;
}

this.Loop = function() {
    console.log(self.Tick);

    switch (self.Tick) {
        case 2:
            self.Phase1.init();
            break;
        case 4: 
            self.Phase2();
            break;
        case 6:
            self.Phase3();
            break;
        case 8:
            self.Phase4();
            break;
        case 10:
            self.Tick = 0;
            break;
    }

    self.Tick++;    
}       

this.Phase1 = function() {

}

我尝试了在Phase1中列出函数的两种方法。我已经尝试过使用一个函数和一个对象,但是我最接近执行的函数列表是列出每个函数的名称。

功能尝试

    this.Phase1 = function() {
this.Phase1.Test1 = function() {
        alert("Test1"); 
    };

    this.Phase1.Test2 = function() {
        alert("Test2");
    };
}

对象尝试

this.Phase1 = {
    Test1: function() {
        alert("Test1"); 
    },
    Test2: function() {
        alert("Test2");
    }
}

我只是想获得每秒调用一次的动态动态列表。

我手动调用该函数没有问题。我知道我可以使用

MAIN.Phase1.Test1();

但我想动态地这样做。

2 个答案:

答案 0 :(得分:0)

也许:

var obj = new Phase1();
var tick = 1;

obj[tick]();

答案 1 :(得分:0)

var Phase1 = {
  Test1: function() {
    alert('test 1');
  },
  Test2: function() {
    alert('test 2');
  },
  Test3: function() {
    alert('test 3');
  }
};

document.querySelector('button').onclick = function() {
  var testNumber = document.querySelector('input').value; // 1, 2 or 3
  Phase1['Test' + testNumber]();
};
<input type="number" value="1" min="1" max="3">
<button>run test</button>