こんにちは!
今回は「JavascriptでObject.keys(object)でObjectのKeyが取得できないorログに表示されないときの対処法」についてお伝えしたいと思います。
何らかの処理でerrorをcatchした際にconsole.error(error)
などで出力することがあると思います。
その際、error
オブジェクトのKey一覧をconsole.log(Object.keys(error))
で確認しようとしたら空の配列が表示されました。
原因はJavascript自体に元々定義されている一部のKeyはObject.keysで取得できないようです。
Object.getOwnPropertyNames()で与えられたオブジェクトで発見されたすべての直接のプロパティを含む配列を取得できる
ポイント
Object.getOwnPropertyNames()は直接のプロパティも取得できる
Object.getOwnPropertyNames()は配列で返却される
以下に具体例を示します
// サンプルコード
try {
throw new Error('something wrong');
} catch (error) {
console.log(Object.keys(error)); // []
console.log(Object.getOwnPropertyNames(error)); // [ 'stack', 'message' ]
}
以上、お疲れ様でしたー!🍵