我已经实现了这个不可变的Pos对象:
var Pos = function(x, y) {
var _x = x;
var _y = y;
return {
x: function() { return _x; },
y: function() { return _y; },
};
}
现在,当我将new Pos(5, 7)
写入控制台时,它显示如下:
▶ Object {x: function, y: function} // Chrome
Object { x: Pos/<.x(), y: Pos/<.y() } // Firefox
这根本没用,因为我看不到x
和y
的值。
我可以创建一个自定义函数来记录x
和y
,但这真的不会那么好,我会失去扩展对象并在里面导航的有用可能性(想象一下更复杂的对象,Pos只是一个例子。)
如果是在C#中,我只是重写ToString(),然后Visual Studio会在调试器中自动使用它来显示我的对象。
在JS中,实现toString似乎没有任何帮助。有没有办法在控制台中轻松查看我的对象x
和y
?
答案 0 :(得分:2)
您可以使用ES5 getter在Chrome中获得更好的控制台行为,也许是其他人:
function Pos(x, y) {
return {
get x() { return x; },
get y() { return y; },
};
}
console.log( Pos(1,5) );
为了避免可能浪费的cpu,chrome不会在控制台中对吸气剂进行计算,直到你点击它为止,但至少你需要做的就是这样。除此之外,您必须制作自己的记录器方法,或使用完全自定义的对象。