2016-11-03 6 views
2

私は多くのゲッタープロパティを持つオブジェクトのコレクションを持っています。私はconsole.tableを使用して、これらの値のサブセットをコンソールに出力したいと考えています。現在の実装ではこれを許可していないようですが、回避策がありますか?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

console.table APIがstill non-standardです。

現在、クロムはgetters valuesで処理できません。また、firefoxをチェックすると、ゲッターで定義された値はすべてundefinedとして出力されます。

hasOwnPropertyまたは'prop' in obj(どちらもうまくいきます)とは関係ありませんが、Object.getOwnPropertyDescriptorに関連している可能性があります。

あなたの例では

(両方クローム& Firefox用):このような場合には

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

しかし、私はまた、(たとえそれで未定義の値を持つ)prop列を表示するには、Chromeから期待されます。

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.

あなたは、ブラウザ上でテストするには、このスニペットを使用することができます

関連する問題