在Ruby中,我们有#inspect
,如果被覆盖,则会将p
函数的输出从#<Vector:0x00000000b5e2a8>
更改为自定义字符串。
在Javascript中,使用console.log()
时默认的对象到字符串转换在Chrome中通常非常好(它是可点击的,语法突出显示的JSON),但在某些情况下它不太方便。有没有办法以类似于Ruby的#inspect
?
例如,我想转换此
Vector {x: 0, y: 0, add: function, subtract: function, ...}
简单地Vector(0, 0)
。
答案 0 :(得分:1)
您可以添加自定义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);
答案 1 :(得分:0)
在Chrome中,您可以尝试console.dirxml()
。对于HTML元素,它会打印一个可扩展的树结构,但对于常规JavaScript对象,它会从属性中创建一个字符串。例如:
var testObj = { test: 'value', 'test 2': 'abc' };
console.dirxml(testObj);
产生
Object {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"}