programing

JavaScript 개체의 내용을 인쇄하시겠습니까?

newsource 2022. 10. 27. 21:52

JavaScript 개체의 내용을 인쇄하시겠습니까?

으로는 「」를 경우, 「」를 합니다.alert(object);로서 나타나다[object Object]JavaScript에서 오브젝트의 모든 콘텐츠 파라미터를 인쇄하려면 어떻게 해야 합니까?

"JSON"을 사용하여 들여쓰기된 좋은 수 .JSON.stringify:

alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));

인수 「」 「」 「 」replacer에 문자열의 내용을 는 문자열의 내용을 변경한 후 반환합니다.

인수 「」 「」 「 」space)는을 높이기 위한 의 수를 합니다.

JSON.stringify매뉴얼을 참조하십시오.

Firefox 를 하고 있는 는, 파이어폭스의 「」를 해 주세요.alert(object.toSource())는 단순한 디버깅을 위해 충분합니다.

하는 것 에, , 「디버거」를 합니다.foreach. 음음printObjectalert()모든 속성 및 각 값을 표시하는 개체입니다.

function printObject(o) {
  var out = '';
  for (var p in o) {
    out += p + ': ' + o[p] + '\n';
  }
  alert(out);
}

// now test it:
var myObject = {'something': 1, 'other thing': 2};
printObject(myObject);

DOM 검사 도구를 사용하면 개체인 속성 아래를 탐색할 수 있으므로 이 도구를 사용하는 것이 좋습니다.Firefox에는 FireBug가 있지만 다른 모든 주요 브라우저(IE, Chrome, Safari)에도 디버깅툴이 내장되어 있어 체크할 필요가 있습니다.

「」를 할 수 .JSON.stringify기능, JSON 라이브러리를 사용합니다.

Node의 util.inspect(개체)를 사용하여 객체의 구조를 인쇄할 수 있습니다.

이것은 특히 개체에 순환 종속성이 있는 경우 유용합니다.

$ node

var obj = {
   "name" : "John",
   "surname" : "Doe"
}
obj.self_ref = obj;

util = require("util");

var obj_str = util.inspect(obj);
console.log(obj_str);
// prints { name: 'John', surname: 'Doe', self_ref: [Circular] }

: JSON.stringify는 다음과 .TypeError: Converting circular structure to JSON

사용할 수 있는 개체의 내용 인쇄

console.log(obj_str);

다음과 같이 콘솔에서 결과를 볼 수 있습니다.

Object {description: "test"} 

콘솔을 열려면 Chrome 브라우저에서 F12 키를 누릅니다. 콘솔 탭은 디버깅 모드에 있습니다.

JavaScript 디버깅에 FireBug 사용을 고려해야 합니다.모든 변수를 대화식으로 검사하고 함수를 단계별로 살펴볼 수 있습니다.

dir(개체)를 사용합니다.또는 Firefox용 Firebug를 언제든지 다운로드할 수 있습니다(매우 도움이 됩니다).

모두를 위한 Javascript!

String.prototype.repeat = function(num) {
    if (num < 0) {
        return '';
    } else {
        return new Array(num + 1).join(this);
    }
};

function is_defined(x) {
    return typeof x !== 'undefined';
}

function is_object(x) {
    return Object.prototype.toString.call(x) === "[object Object]";
}

function is_array(x) {
    return Object.prototype.toString.call(x) === "[object Array]";
}

/**
 * Main.
 */
function xlog(v, label) {
    var tab = 0;

    var rt = function() {
        return '    '.repeat(tab);
    };

    // Log Fn
    var lg = function(x) {
        // Limit
        if (tab > 10) return '[...]';
        var r = '';
        if (!is_defined(x)) {
            r = '[VAR: UNDEFINED]';
        } else if (x === '') {
            r = '[VAR: EMPTY STRING]';
        } else if (is_array(x)) {
            r = '[\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + ']';
        } else if (is_object(x)) {
            r = '{\n';
            tab++;
            for (var k in x) {
                r += rt() + k + ' : ' + lg(x[k]) + ',\n';
            }
            tab--;
            r += rt() + '}';
        } else {
            r = x;
        }
        return r;
    };

    // Space
    document.write('\n\n');

    // Log
    document.write('< ' + (is_defined(label) ? (label + ' ') : '') + Object.prototype.toString.call(v) + ' >\n' + lg(v));
};



// Demo //

var o = {
    'aaa' : 123,
    'bbb' : 'zzzz',
    'o' : {
        'obj1' : 'val1',
        'obj2' : 'val2',
        'obj3' : [1, 3, 5, 6],
        'obj4' : {
            'a' : 'aaaa',
            'b' : null
        }
    },
    'a' : [ 'asd', 123, false, true ],
    'func' : function() {
        alert('test');
    },
    'fff' : false,
    't' : true,
    'nnn' : null
};

xlog(o, 'Object'); // With label
xlog(o); // Without label

xlog(['asd', 'bbb', 123, true], 'ARRAY Title!');

var no_definido;
xlog(no_definido, 'Undefined!');

xlog(true);

xlog('', 'Empty String');

프로토타입에서 객체에 고유한 toString 메서드를 지정할 수 있습니다.

http://www.json.org/js.html의 json.html을 사용하여 json 데이터를 문자열 데이터로 변경할 수 있습니다.

프로토타입의 Object.inspect() 메서드를 사용할 수도 있습니다.이 메서드는 "오브젝트의 디버깅 지향 문자열 표현을 반환합니다.

http://api.prototypejs.org/language/Object/inspect/

오브젝트 또는 배열의 내용을 경고하는 간단한 기능.
내용을 경고하는 배열, 문자열 또는 개체를 사용하여 이 함수를 호출합니다.

기능.

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

사용.

var data = [1, 2, 3, 4];
print_r(data);

Internet Explorer 8에는 Firefox용 Firebug와 유사한 개발자 도구가 있습니다.Opera에는 Opera Dragon Fly가 있고 Google Chrome에는 Developer Tools(Shift+Ctrl+J)라는 것도 있습니다.

다음은 IE6-8의 JavaScript 디버깅에 대한 보다 자세한 답변입니다. IE8 '개발자 도구'를 사용하여 이전 IE 버전을 디버깅합니다.

저도 비슷한 문제에 직면했는데, 그 이유는 데이터를 가져오기 위해 Ajax를 사용했기 때문입니다.이 경우, 2개의 비동기 AJAX 콜을 실시했습니다.하나는 문자열 메시지를 반환하고 경보로 표시합니다.두 번째 ajax에서는 어레이 리스트를 json 형식으로 가져와 js로 디코딩합니다.그래서 나의 두 번째 요청은 먼저 처리를 하기 위해 사용되었고 나는 오브젝트에 대해 경고를 받았다.

확인만 하면 됩니다. 1. 경보에는 문자열이 포함되어 있어야 합니다. 2. arrayList 또는 기타 오브젝트를 얻으면 디코딩합니다.

좋은 일만 가득하시길요!

언급URL : https://stackoverflow.com/questions/1625208/print-content-of-javascript-object