--- title: Reflect.has() slug: Web/JavaScript/Reference/Global_Objects/Reflect/has tags: - ECMAScript 2015 - JavaScript - Method - Reference - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/has ---
静的な Reflect.has()
メソッドは、機能としては in
演算子のように動作します。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
Reflect.has(target, propertyKey)
target
propertyKey
対象がプロパティを持つかどうかを示す {{jsxref("Boolean")}} 値。
target
が {{jsxref("Object")}} でなかった場合、 {{jsxref("TypeError")}} が発生します。
Reflect.has
メソッドは、オブジェクトプロパティがあるかをチェックします。機能としては in
演算子のように動作します。
Reflect.has({x: 0}, 'x') // true Reflect.has({x: 0}, 'y') // false // プロトタイプチェーンのプロパティがあるため、true が返る Reflect.has({x: 0}, 'toString') // Proxy with .has() handler method obj = new Proxy({}, { has(t, k) { return k.startsWith('door') } }); Reflect.has(obj, 'doorbell') // true Reflect.has(obj, 'dormitory') // false
Reflect.has
は継承されたプロパティについて true
を返し、これは in
演算子と同様です。
const a = {foo: 123} const b = {__proto__: a} const c = {__proto__: b} // The prototype chain is: c -> b -> a Reflect.has(c, 'foo') // true
仕様書 |
---|
{{SpecName('ESDraft', '#sec-reflect.has', 'Reflect.has')}} |
{{Compat("javascript.builtins.Reflect.has")}}
in
演算子