Javascript 获取console.log()以显示自定义对象描述
我有一个定制的JS对象,用来表示网格。在本例中,它如下所示:Javascript 获取console.log()以显示自定义对象描述,javascript,Javascript,我有一个定制的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
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;
}
}
功能网格(c,r)
{
var布局=[];
var contentPointer=0;
this.getCell=函数(c,r)
{
//返回所选单元格
}
this.getRow=函数(r)
{
//返回所选行
}
this.getCol=函数(c)
{
//返回所选列
}
对于(变量行=0;行
我使用var aGrid=newgrid(10,10)在这里和那里创建了多个实例然后以各种方式操纵它们;添加/更新单元格内容等
我希望能够做的是调用console.log(aGrid)
并能够自定义控制台显示的内容,例如,我可以获得我添加的所有单元格值的字符串或类似内容
在am中,我们将使用trace(aGrid)来使用Actionscript
代替console.log(aGrid)但是在AS3中,我可以重写对象的toString()
方法,这将更新控制台输出中显示的内容
我已经看到我可以在JS中向我的网格对象添加toString()
方法,但是控制台似乎没有使用它,除非我专门调用console.log(agid.toString())代码>。虽然这很好,但我只是想知道是否有办法解决这个问题
控制台是否真的基于被记录对象的某个可重写方法生成其输出,或者它是否执行了一些疯狂的内部魔法来获取值
使用警报(aGrid)
似乎使用toString()
并获取自定义值,但我宁愿剥下自己的皮,也不愿使用alert()调试大型项目代码>:)
欢迎任何评论。多谢各位
PS-我不知道不同的浏览器是否对console.log()
有不同的处理方式,但我使用的是Chrome v33。console.log
接受对象作为参数,如果您将它放在那里,您将能够在Chrome控制台中检查它
因此,删除.toString()
,它就会起作用
console.log("aGird", aGrid );
我已经看到我可以在JS中将toString()方法添加到我的网格对象中,但是控制台似乎不使用它,除非我专门调用console.log(agid.toString());。虽然这很好,但我只是想知道是否有办法解决这个问题
不,这是没有办法的。控制台本身决定了如何显示传递的参数,Chrome控制台允许您动态检查对象,而不是试图以某种方式序列化它们。如果需要自定义输出,则需要向其传递一个字符串。您可以使用它。console.table允许您指定要查看的属性。比如说
console.table(aGrid); // will show all properties
console.table(aGrid, 'firstName'); // will show only firstName property
console.table(aGrid, ['firstName', 'lastName']); // will show firstName and lastName properties