我正在尝试在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();
但我想动态地这样做。
答案 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>