Есть ли метод, который я могу переопределить на объекте JavaScript, чтобы контролировать то, что отображается console.log? - PullRequest
10 голосов
/ 02 июня 2010

В частности, я думаю о Chrome, хотя Firebug был бы интересен. Я пытался toString () и valueOf (), но ни один из них, кажется, не используется. Интересно, что если я возьму функцию, она отобразит определение функции - но затем, если я добавлю метод toString (), он покажет ноль!

var a = function(){};
console.log(a); // output: function (){}
a.toString = function(){ return 'a'; };
console.log(a); // output: null
a.valueOf = function(){ return 'v'; };
console.log(a); // output: null

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 03 июня 2010

Нет, я не знаю. Лучше всего будет определить метод toString() для объекта, который вы хотите зарегистрировать, а затем вызвать его, прямо или косвенно:

var o = {};
o.toString = function() {
    return "Three blind mice";
};

console.log("" + o);
console.log(o.toString());
1 голос
/ 19 декабря 2018

Только для будущих читателей, теперь есть способ сделать именно то, что здесь просят.

Для решения, пожалуйста, прочитайте этот дублированный пост:

настроить поведение console.log пользовательского объекта

0 голосов
/ 03 июня 2010

Вы должны получить лучший результат от Firebug, вы должны получить

var a = function(){};
console.log(a); // output: function 
a.toString = function(){ return 'a'; };
console.log(a); // output: function, {toString()}
a.valueOf = function(){ return 'v'; };
console.log(a); // output: function, {toString(), valueOf()}

http://code.google.com/p/fbug/issues/detail?id=3117

...