javascript - 使用循环函数简化代码

标签 javascript cycle simplify

我有使用相同循环代码的乘法函数,我想知道是否可以通过使用一个循环函数来简化代码,这样我就可以通过调用所需的函数名称来执行代码。

现在:

for(var i=0;i<all;i++){ someFunction(i) }

需要:

cycle(someFunction);
function cycle(name){
    for(var i=0;i<all;i++){
       name(i);
    }
}

我尝试使用“window”来做到这一点,我没有收到任何错误,但该功能没有执行。

var MyLines = new lineGroup();
MyLines.createLines(); // works
MyLines.addSpeed();    // doesn't work


var lineGroup = function(){
    this.lAmount = 5,
    this.lines = [],

    this.createLines = function (){
        for(var i=0,all=this.lAmount;i<all;i++){
            this.lines[i] = new line();
        }
    },

    this.addSpeed = function (){
        // no error, but it's not executing addSpeed function
        // if i write here a normal cycle like in createLines function
        // it's working ok
        this.linesCycle("addSpeed");
    },
    this.linesCycle = function(callFunction){
        for(var i=0,all=this.lAmount;i<all;i++){
            window['lineGroup.lines['+i+'].'+callFunction+'()'];
        }
    }
}

var line = function (){
    this.addSpeed = function (){
        console.log("works");
    }
}

最佳答案

window['lineGroup.lines['+i+'].'+callFunction+'()'];

literally 尝试访问以 lineGroups.lines[0] 开头的属性。这样的属性只有在您明确执行 window['lineGroups.lines[0]'] = ... 时才会存在,我相信您没有这样做。

根本不需要涉及window。只需访问对象的 line 属性:

this.lines[i][callFunction]();

i get no error but the function is not executed.

访问不存在的属性不会产生错误。示例:

window[';dghfodstf0ap9sdufgpas9df']

这会尝试访问属性 ;dghfodstf0ap9sdufgpas9df,但由于它不存在,这将导致 undefined。由于没有对返回值进行任何操作,因此无法观察到任何变化。

关于javascript - 使用循环函数简化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489275/

相关文章:

expression - 你能简化这个表达式吗?

uml - 处理 UML 事件图中的组合对象

r - 按年份简化数据框并计算变化百分比

javascript - 使用同一个按钮触发两个不同的JQuery事件

python - 如何改变获得正确答案的周期?

javascript - 使用 .click() 和 setInterval 循环选项卡

algorithm - 如何找到完整无向图中的哈密顿循环数?

javascript - Javascript mousedown、mouseup 和 mouseover 事件出现奇怪且意外的行为

javascript - 无法查看 ion-content

javascript - 警报($(obj).attr ("id"))有效;但 $(obj).attr ('id' ) 未定义