Есть ли способ, который я могу переопределить на объекте JavaScript, чтобы контролировать то, что отображается console.log?
Я думаю, в частности, о 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
Любые идеи?
Ответы
Ответ 1
Я не знаю. Лучше всего будет определить метод toString()
для объекта, который вы хотите записать, а затем вызвать его прямо или косвенно:
var o = {};
o.toString = function() {
return "Three blind mice";
};
console.log("" + o);
console.log(o.toString());
Ответ 2
Вы должны получить лучший результат от 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
Ответ 3
Просто для будущих читателей, теперь есть способ сделать именно то, что здесь просят.
Для решения, пожалуйста, прочитайте этот дублированный пост:
настроить console.log поведение пользовательского объекта