Ниже мой блок кода. поскольку я не установил Firebug в IE, каждый раз, когда я пытаюсь проверить свой код в IE, я получаю сообщение об ошибке console не определено. поэтому я решил и разработал этот блок кода, чтобы console.log работал только в Firefox и избегал сообщений об ошибках в IE .

function clog() {
    if(window.console && window.console.firebug) {
        var a =[];
        for(var i=0;i<arguments.length;i++) {
            a.push(arguments[i]);
        }
        console.log(a.join(' , '));
    }
}

Мой код работает нормально, и я получаю результаты, которые я хотел,

Но когда я попытался использовать приведенный выше код в jQuery (например, clog($('body'));),

Результат, который я ожидал, должен быть jQuery(body). но я получаю результат как [object Object]

Как я могу получить результаты, которые я ожидал?

Спасибо !!

4
user372551 24 Июл 2010 в 15:19

3 ответа

Лучший ответ
console.log(a);

Вместо того

console.log(a.join(' , '));

Должен это сделать.

Array.prototype.join объединит все записи массива в String. Это означает

var b = [{}, "test"];
b.toString()

Будет оцениваться как "[object Object],test" независимо от того, что methods или members находятся внутри этого объекта. Вы просто теряете эту информацию, звоня .toString().

2
jAndy 24 Июл 2010 в 11:39

Я всегда пишу функцию-обертку (чтобы не «не консольные» браузеры не имели проблем)

function log(msg) {
    try {
      console.log(msg);
    } catch(e){}
}

Вы можете проверить объект "msg", затем проверить тип, чтобы определить, является ли он объектом "jQuery", и извлечь данные.

3
Derrick 24 Июл 2010 в 11:45

Когда вы вызываете такой селектор, скажите $('body'), что вы делаете - создаете объект, объект jQuery ... так что ваш вывод правильный.

Если вы хотите отобразить что-то отличное от .toString(), вам следует вызвать это свойство, например:

$('body').selector //body
$('body').length   //1
$('body').context  //document

Если все, что вы используете, это console.log, я считаю, что просто создать его, если он отсутствует (в отличие от проверки всякий раз, когда вы хотите его использовать), гораздо проще, просто запустите этот код перед любым кодом регистрации:

if (typeof console == "undefined") console = { log: function () { } };

Затем вы можете удалить текущий чек if.

4
Nick Craver 24 Июл 2010 в 11:39