我有一个自定义的JS对象,用来表示一个网格。为了简化该示例,它如下所示:
function Grid(c, r)
{
var layout = [];
var contentPointer = 0;
this.getCell = function(c, r)
{
//Return selected cell
}
this.getRow = function(r)
{
//Return selected row
}
this.getCol = function(c)
{
//Return selected column
}
for(var row = 0; row < r; row++)
{
layout[row] = [];
for(var col = 0; col < c; col++)
layout[row][col] = 0;
}
}
我在这里创建了多个实例,使用
var aGrid = new Grid(10, 10);
,然后以各种方式操作它们; 添加/更新单元格的内容等。我想做的是调用
console.log(aGrid);
并能够自定义控制台显示的内容,例如,我添加的所有单元格值的字符串或类似的东西。我习惯于使用Actionscript,在那里我们将使用
trace(aGrid);
代替console.log(aGrid);
,但在AS3中,我可以重写对象的toString()
方法,并更新控制台输出中显示的内容。我已经看到我可以在JS中向我的网格对象添加
toString()
方法,但控制台似乎不使用它,除非我明确调用console.log(aGrid.toString());
。虽然这很好,但我想知道是否有一种方法可以解决这个问题。控制台实际上是基于被记录对象的某些可覆盖方法生成其输出,还是进行一些疯狂的内部魔法来获取值?
使用
alert(aGrid);
似乎使用toString()
并捕获自定义值,但我宁愿剥下自己的皮也不想使用alert();
来调试一个大项目:)非常欢迎任何和所有的评论。谢谢。
PS-我不知道不同的浏览器如何处理
console.log()
,但我正在使用Chrome v33。