javascript - 自定义我的对象在 JS 控制台中的显示方式

标签 javascript debugging console.log

我已经实现了这个不可变的 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

这根本没有用,因为我看不到 xy 的值。 我可以创建一个自定义函数来记录 xy,但这真的不是那么好,而且我会失去扩展对象并在内部导航的有用可能性(想象更复杂的物体,Pos 只是一个例子)。

如果它是在 C# 中,我只需重写 ToString(),然后 Visual Studio 会自动在调试器中使用它来显示我的对象。

然而,在 JS 中实现 toString 似乎根本没有帮助。有什么方法可以在控制台中轻松查看对象的 xy 吗?

最佳答案

你可以在 chrome 中获得更好的控制台行为,也许其他人,使用 ES5 getters:

function Pos(x, y) {
    return {
        get x() { return x; },
        get y() { return y; },
    };
}
console.log( Pos(1,5) );

为了避免可能的 cpu 浪费,chrome 不会在您单击它之前在控制台中计算 getter,但至少这就是您所要做的。除此之外,您还必须制作自己的记录器方法,或使用完全自定义的对象。

关于javascript - 自定义我的对象在 JS 控制台中的显示方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211912/

相关文章:

c# - ASP.Net 列表框 : maintain listbox scrolling position after partial postback (not site scrolling position! )

javascript - php 中的 POST 和提交按钮问题

javascript - 带有 promise.catch 和 console.log 的 NodeJS 错误?

node.js - 远程查看 Node 控制台日志

angularjs - 只有在打开控制台后页面才能在 IE9 中正常工作。为什么?

javascript - 如何在浏览器中显示word/pdf二进制数据

javascript - addEventListener() 不工作

eclipse - 调试循环

c++ - Netbeans-7.4 中的 gdb 用于 C++ 调试

c - 自动跟踪变量的变化