使用字符串和对象名称在javascript中运行函数

时间:2018-12-30 15:00:43

标签: javascript

我在不同版本中多次看到此问题, 但是对我没有帮助...

我有这个JS对象:

var memory = {

    myLoop: function myLoop (action) {
    // do some stuff...
    } }

var messages = {

    myLoop: function myLoop (action) {
    // do some other stuff...
    } }

另外,我有这个数组:

listOfScreens = ['messages','memory'];

我想从此函数调用myLoop函数:

var slider = {
    playScreen: function startScreen(){
        listOfScreens[0].myLoop('play');
        // and next time to call:
        listOfScreens[0].myLoop('play');

    }
}

所以我的问题是:如何使用全局数组字符串从滑块对象调用内存对象中的函数myLoop

我尝试了很多,但还是没有成功。

2 个答案:

答案 0 :(得分:0)

问题是您使用的是字符串数组而不是对象数组。

在代码中替换下面的行

listOfScreens = ['messages','memory'];

在这一行,

listOfScreens = [messages, memory];

答案 1 :(得分:-1)

只需使用方括号符号即可访问变量对象的属性。

var slider = {
    playScreen: function startScreen(){
        window[listOfScreens[0]].myLoop('play');
        window[listOfScreens[0]].myLoop('play');
    }
}

var memory = {
  myLoop: function myLoop(action) {
    console.log('memory.myLoop called')
  }
}

var messages = {
  myLoop: function myLoop(action) {
    console.log('messages.myLoop called')
  }
}

var listOfScreens = ['messages', 'memory'];

var slider = {
    playScreen: function startScreen(){
        window[listOfScreens[0]].myLoop()
        // and next time to call:
        window[listOfScreens[1]].myLoop()
    }
}

slider.playScreen();