当我在JavaScript程序中console.log()
一个对象时,我只看到输出的[object Object]
,这对确定它是什么对象(甚至是什么类型的对象)没有多大帮助。
在C#中,我习惯于重写ToString()
,以便能够定制对象的调试器表示。我在JavaScript中也可以做类似的事情吗?
发布于 2011-06-10 22:13:44
你也可以在Javascript中覆盖toString
。请参见示例:
function Foo() {}
// toString override added to prototype of Foo class
Foo.prototype.toString = function() {
return "[object Foo]";
}
var f = new Foo();
console.log("" + f); // console displays [object Foo]
有关如何在JavaScript中确定对象类型名称的信息,请参阅this讨论。
发布于 2015-07-11 06:56:02
首先覆盖对象或原型的toString
:
var Foo = function(){};
Foo.prototype.toString = function(){return 'Pity the Foo';};
var foo = new Foo();
然后转换为字符串以查看对象的字符串表示:
//using JS implicit type conversion
console.log('' + foo);
如果您不喜欢额外的输入,您可以创建一个函数,将其参数的字符串表示形式记录到控制台:
var puts = function(){
var strings = Array.prototype.map.call(arguments, function(obj){
return '' + obj;
});
console.log.apply(console, strings);
};
用法:
puts(foo) //logs 'Pity the Foo'
puts(foo, [1,2,3], {a: 2}) //logs 'Pity the Foo 1,2,3 [object Object]'
更新
E2015为这些东西提供了更好的语法,但是您必须使用像Babel这样的转译器
// override `toString`
class Foo {
toString(){
return 'Pity the Foo';
}
}
const foo = new Foo();
// utility function for printing objects using their `toString` methods
const puts = (...any) => console.log(...any.map(String));
puts(foo); // logs 'Pity the Foo'
发布于 2011-06-10 22:29:33
在浏览器JS中获得可调试输出的一种简单方法是将对象序列化为JSON。这样你就可以像这样打电话
console.log ("Blah: " + JSON.stringify(object));
举个例子,alert("Blah! " + JSON.stringify({key: "value"}));
生成一个文本为Blah! {"key":"value"}
的警报
https://stackoverflow.com/questions/6307514
复制相似问题