【问题标题】:Create new objects in for loop - Javascript在 for 循环中创建新对象 - Javascript
【发布时间】:2015-03-24 17:50:41
【问题描述】:

我有一个基于所选标准显示图表的页面。每个图都是一个单独的实例,需要自己的对象引用。我在 for 循环中创建了新对象,但是如何在该特定函数之外访问这些对象。

var chartObject = new Array();

function runInit () {
$(document).ready(function(){
    $("#submit").click(function() { 
        $("#pointList :selected").each(function(){
            selectedValues.push($(this).val()); 
        });

        for(var j = 0; j < selectedValues.length; j++)
        {
            chartObject[j] = new Object();

            var charts = [];

            charts.push( drawDataView( demos[demo] ) );

            chartObject[j].allDataLoaded = function( ) {
                //more code             
            };
        }
    }); 
});
}

我需要在另一个函数中使用chartObject[j]:

function drawDataView ( demo ) {
    var dataCache = new DataCache( chartObject[j], dataSource );
}

显然j 没有在drawDataView 中定义,那么如何在该for 循环中创建新对象并在其他地方使用该变量?

欢迎提出任何建议!

【问题讨论】:

    标签: javascript object for-loop


    【解决方案1】:

    您可以将j 作为额外参数传递给drawDataView 函数:

    function drawDataView(demo, j) {
        var dataCache = new DataCache( chartObject[j], dataSource );
    }
    

    然后这样称呼它:

    charts.push(drawDataView(demos[demo], j));
    

    更新

    因为您没有在drawDataView 函数中返回任何内容,所以您的数组将被undefined 填充。我想你想在最后加上return dataCache;。

    【讨论】:

    • 我是个白痴,谢谢!另一个快速的问题,我是否正确地创建了对象?只是想确定一下,因为我没有得到我想要的结果
    • 不客气。我添加了一个更新,我认为它可以解释您的意外结果。
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多