2017-07-20 10 views
2

オブジェクトが特定のキーを持っているかどうかをチェックする最も防弾方法がある:これは、一定の保証を提供してObject.prototype.hasOwnProperty.call(obj、key)を実行する代わりにES6 +の代替手段がありますか?

Object.prototype.hasOwnProperty.call(obj, key) 

keyobj直接財産である場合にのみtrueに評価し、それが動作しますobjのプロトタイプが通常Objectでなくても(たとえば、const obj = Object.create(null)で作成された場合など)

しかし、それは一口です。

ES6以降(polyfillableまたはBabelでコンパイル可能な 'プロポーザル'を含む)の新しい構文/メソッドがありますが、これは同じ保証を提供しますが、よりわかりやすく読みやすい方法ですか?

+0

変数でエイリアスするだけではどうですか?つまり、 'const iHaz = Object.prototype.hasOwnProperty'のように使用します。' const iDoHaz = iHaz.call(obj、key) 'のように使用します。 – Joseph

+0

これを使用する必要はほとんどないので、何が問題なのですか? – Bergi

+2

あなたのお母さんはあなたの口にコードを入れないよう教えてくれませんでしたか? ;)。 –

答えて

3

私はこのための構文的な砂糖に気づいていません。しかし、これは非常に頻繁に使用する必要はありません、ときどきそれを書くことはあまりにも悪くないはずです。代わりにinを使用し、ほとんどの場合、あなたがチェックを省略することができます。

const hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key); 
const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty); 

1:あなたは本当にただのヘルパー関数を定義し、より頻繁にそれを使用する必要がある場合equivalent shorter version

({}).hasOwnProperty.call(obj, key) 

だろう快適なhas methodを使用してMapを使用する必要があります。

関連する問題