Reflect.has()
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2016å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
Reflect.has() ã¯éçã¡ã½ããã§ãin æ¼ç®åã¨ä¼¼ã¦ãã¾ããã颿°ã¨ãã¦åå¨ãã¾ãã
試ãã¦ã¿ã¾ããã
const object = {
property1: 42,
};
console.log(Reflect.has(object, "property1"));
// äºæ³ãããçµæ: true
console.log(Reflect.has(object, "property2"));
// äºæ³ãããçµæ: false
console.log(Reflect.has(object, "toString"));
// äºæ³ãããçµæ: true
æ§æ
Reflect.has(target, propertyKey)
弿°
target-
ããããã£ãæ¢ã対象ã®ãªãã¸ã§ã¯ãã
propertyKey-
ãã§ãã¯ããããããã£åã
è¿å¤
対象ãããããã£ãæã¤ãã©ããã示ãè«çå¤ (Boolean)ã
ä¾å¤
TypeError-
targetããªãã¸ã§ã¯ãã§ã¯ãªãå ´åã«çºçãã¾ãã
解説
Reflect.has() ã¯ããªãã¸ã§ã¯ãã«ããããã£ãåå¨ãããã©ããã調ã¹ãåå°çæå³ã¥ããæä¾ãã¾ããã¤ã¾ããReflect.has(target, propertyKey) ã¯æå³ã¥ãçã«æ¬¡ã®ãã®ã¨åçã§ãã
propertyKey in target;
Reflect.has() ã¯ãtarget ã® [[HasProperty]] ãªãã¸ã§ã¯ãå
é¨ã¡ã½ãã ãå¼ã³åºãã¾ãã
ä¾
>Reflect.has() ã®ä½¿ç¨
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
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-reflect.has > |