来自正确定义的JavaScript函数的ReferenceError?

时间:2011-08-15 12:53:24

标签: javascript jquery javascript-objects

我已经宣称自己是一个名为“故障”的JavaScript对象。

然后我借用了一个我在jQuery extend()文档中找到的函数,该函数在不同的页面上运行良好,但是相同的设置 - 奖励对象而不是细分。

breakdown = {};

breakdown.printObj = function(obj) { 
    var arr = []; 
    $.each(obj, function(key, val) { 
        var next = key + ": "; 
        next += $.isPlainObject(val) ? printObj(val) : val; 
        arr.push( next ); 
    }); 
    return "{ " +  arr.join(", ") + " }"; 
} 

我正在尝试使用它,因为我在另一页上看到我的“类别”数组中的内容:

breakdown.getPointsBreakdown = function(categories, transactions) {

    alert( breakdown.printObj(categories) );

如果我警告“输入”,则会显示“对象”。如果我提醒“categories [1] .Title”,它会显示“Good Behavior”,因此数组正在传递给此函数中的categories变量。

但是,当我使用“breakdown.printObj”时,我在FireBug中收到以下错误:

ReferenceError { message="printObj is not defined", fileName="https://frog.ashingtonh...7fa8452ccb3e94ba89e487a", more...}

我不明白怎么做!

3 个答案:

答案 0 :(得分:1)

更改

breakdown.printObj = function(obj) { 
    // snip...
};

breakdown.printObj = function printObj(obj) { 
    // snip...
};

这样你就可以递归地调用它。

这称为named function expression

答案 1 :(得分:1)

您应该在第6行中拥有breakdown.printObj(val)而不仅仅是printObj(val)

答案 2 :(得分:1)

更改

    next += $.isPlainObject(val) ? printObj(val) : val; 

为:

    next += $.isPlainObject(val) ? breakdown.printObj(val) : val;