2016-11-12 2 views
0

크롬 54.0.2840.71 (64 비트)배열을 console.log 나는 사용자 정의 클래스에서 내장 객체의 배열을 사용자 정의 클래스의 toString

를 사용하지 않습니다. 배열이 console.log 인 경우 배열의 객체를 수동으로 루프를 반복하지 않고도 toString 함수를 사용하려면 어떻게해야합니까? 이것이 가능한가?

코드jsfiddle

function MyClass(value) { 
    MyClass.prototype.getValue = function() { 
    return value; 
    } 
} 
MyClass.prototype.toString = function() { 
    return "[MyClass: " + this.getValue() + "]"; 
} 

var mc0 = new MyClass(0); 
var mc1 = new MyClass(1); 
console.log([mc0, mc1]); 

전류 출력

[MyClass, MyClass] 

원하는 출력

[[MyClass: 0], [MyClass: 1]] 
+0

2016 년입니다. ES6을 사용하십시오. –

+2

생성자에서 프로토 타입을 수정하지 마십시오 !! – Oriol

+0

[콘솔이 입력 된 객체의'toString' 메소드를 사용하지 않는 이유는 무엇입니까?] (http://stackoverflow.com/) [mc0.toString() === "[MyClass : 1]"' q/12254038/1529630) – Oriol

답변

0

console.log에는 개체의 문자열 표현이 표시되지 않고 해당 JSON 표기법을 나타내는 트리가 표시됩니다. 무엇이든 상관없이 문자열 표현을 원하면 문자열을 전달하십시오.

function MyClass(value) { 
 
    this.getValue = function() { // As a side note, don't overwrite the prototype in constructor 
 
    return value; 
 
    } 
 
} 
 
MyClass.prototype.toString = function() { 
 
    return "[MyClass: " + this.getValue() + "]"; 
 
} 
 

 
var mc0 = new MyClass(0); 
 
var mc1 = new MyClass(1); 
 
console.log([mc0, mc1].toString()); 
 
// OR 
 
console.log("%s",[mc0, mc1]);

또한, 그 console.log가하는 유일한 것은 아니다. 또한 DOM 요소와 같은 일부 객체에 대해 특별한 처리를 수행합니다. 자세한 내용은 MDN page을 참조하십시오.

관련 문제