从方法 JavaScript 访问对象变量

access object variable from method javascript

本文关键字:对象 变量 访问 JavaScript 方法      更新时间:2023-09-26

我在访问对象方法中的数组时遇到问题。虽然日志完美地返回了值,但以下行返回了一个错误,即 allRect[n] 未定义。

我想它与可变可访问性有关,但是它可以记录在一行中并在下一行中拒绝它的存在这一事实让我有点不知道。

谢谢大家。

        this.s = Snap('#'+id);
        var allRects = [];
        this.xPos = 0;
        var scale = vizWidth/locationSum(data);         
        ...

        //methods
        this.updateViz = function() {
            apiRequest('datasets', 164, 'json').done(   
                function(data){ 
                    var n = 0;

                    data = locationDataIntoArray(data);

                    for(i = 0; i< allRects.length; i++){
                        console.log(allRects[n]);
                        allRects[n].animate({ width:parseInt(data[i][2]), opacity:evaluateMachine(data[i][0])},3000);
                        n++;
                        allRects[n].animate({ width:parseInt(data[i][3]), opacity:evaluateTech(data[i][1])},3000);
                        n++;                
                    }
                }       
            )
        };

在此代码中:

                for(i = 0; i< allRects.length; i++){
                    console.log(allRects[n]);
                    allRects[n].animate({ width:parseInt(data[i][2]), opacity:evaluateMachine(data[i][0])},3000);
                    n++;
                    allRects[n].animate({ width:parseInt(data[i][3]), opacity:evaluateTech(data[i][1])},3000);
                    n++;                
                }

每次迭代时n递增两次。在for循环进行到一半时,n将超出数组的末尾。

第一次通过循环时,当in都为零时,您将对allRects[0]进行动画处理。然后,递增nallRects[1]动画,然后再次递增n。因此,在第二次通过循环时,您将对allRects[2]allRects[3]进行动画处理,依此类推。