Javascript 从console.log()自定义文本
在Ruby中,我们有Javascript 从console.log()自定义文本,javascript,Javascript,在Ruby中,我们有#inspect,如果重写它,将p函数的输出从类似#的内容更改为自定义字符串 在Javascript中,使用console.log()时的默认对象到字符串转换在Chrome中通常非常好(它是可单击的,语法突出显示的JSON),但在某些情况下并不方便。有没有一种方法可以像Ruby的#inspect那样更改文本表示 例如,我想将其转换为 Vector {x: 0, y: 0, add: function, subtract: function, ...} 要简单地Vector(
#inspect
,如果重写它,将p
函数的输出从类似#
的内容更改为自定义字符串
在Javascript中,使用console.log()
时的默认对象到字符串转换在Chrome中通常非常好(它是可单击的,语法突出显示的JSON),但在某些情况下并不方便。有没有一种方法可以像Ruby的#inspect
那样更改文本表示
例如,我想将其转换为
Vector {x: 0, y: 0, add: function, subtract: function, ...}
要简单地
Vector(0,0)
您可以添加一个自定义toString
方法:
Vector.prototype.toString = function(){ return 'Vector('+this.x+','+this.y+')'; };
console.log(vector+'');
也可以使用自定义日志功能:
function log(vector){ console.log('Vector('+vector.x+','+vector.y+')'); }
log(vector);
在Chrome中,您可以尝试
console.dirxml()
。对于HTML元素,它会打印一个可扩展的树结构,但对于常规JavaScript对象,它会从属性中创建一个字符串。例如:
var testObj = { test: 'value', 'test 2': 'abc' };
console.dirxml(testObj);
产生:
Object {test: "value", test 2: "abc"}
{
"test": "value",
"test 2": "abc"
}
另一个建议是将对象包装在JSON.stringify
调用中,例如:
console.log(JSON.stringify(testObj, null, 4));
产生:
{
"test": "value",
"test 2": "abc"
}
或者将第二个和第三个参数放到stringify
,这将为您提供:
{"test":"value","test 2":"abc"}
您可以重写
toString
方法,然后重写console.log(obj.toString())
。您可能希望使用控制台继续阅读。@RocketHazmat这似乎是我能找到的最接近的方法。但上述两种方法都需要修改console.log()
调用。使用console.log()
时,Chrome不使用“对象到字符串”转换。“我想只有IE才会这么做。”“你说得对,我的错。”。我唯一的其他建议是类似于console.log(JSON.stringify(obj,null,4))代码>