ReferenceError из функции JavaScript, которая определена правильно? - PullRequest
1 голос
/ 15 августа 2011

Я объявил себя объектом JavaScript с именем «breakdown».

Затем я позаимствовал функцию, которую я нашел в документации 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) );

Если я "typeof" вместо этого предупреждения, он отображает "объект".Если я предупреждаю «category [1] .Title», он отображает «Good Behavior», поэтому массив корректно передается в переменную category в этой функции., Я получаю следующую ошибку в FireBug:

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

Я не понимаю, как!

Ответы [ 3 ]

1 голос
/ 15 августа 2011

Вы, вероятно, должны иметь breakdown.printObj(val), а не просто printObj(val) в строке 6.

1 голос
/ 15 августа 2011

Изменение

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

до:

    next += $.isPlainObject(val) ? breakdown.printObj(val) : val; 
1 голос
/ 15 августа 2011

Изменение

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

до

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

чтобы вы могли вызывать его рекурсивно.

Это называется выражением именованной функции .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...