有没有办法让console.table执行属性访问器函数?

时间:2016-11-03 17:13:06

标签: javascript google-chrome console

我有一组具有许多getter属性的对象。我希望能够使用console.table在控制台中打印这些值的子集。当前的实现似乎不允许这样,是否有解决方法?

let obj = {
    get prop() {
        return "getter";
    }
    id:1
}

console.table([obj]); // prints only index, and id
console.table([obj], ["prop"]); // prints only index, but still not "prop"

1 个答案:

答案 0 :(得分:1)

console.table api是still non-standard

目前 - chrome无法使用getters values,如果您要检查Firefox,则所有由getter定义的值都会打印为undefined

请注意,这与hasOwnProperty'prop' in obj无关(两者都很棒),但它可能与Object.getOwnPropertyDescriptor有关。

在您的示例中(适用于Chrome和Firefox):

Object.getOwnPropertyDescriptor(obj, 'id').value
// 1
Object.getOwnPropertyDescriptor(obj, 'prop').value
// undefined

但是,如果是这种情况,我希望Chrome也会显示prop列(即使其中包含未定义的值)。

您可以使用此代码段在浏览器上进行测试:

let obj = {
    get prop() {
        return "getter";
    },
    id:1
}

console.log('Log "t in obj"')
for (var t in obj) {
  console.log(t, obj[t]);
}
console.log('')

console.table([obj]);
console.table([obj], ["id"]);
console.table([obj], ["prop"]); // currently returns a column of 'undefined' in firefox, and in chrome that column doesn't exists.