Baseline Widely available
Symbol.hasInstance
ì ì ë°ì´í° ìì±ì ì ìë ¤ì§ ì¬ë³¼ @@hasInstance
를 ëíë
ëë¤. instanceof
ì°ì°ìë ìì±ì ê°ì²´ê° ê°ì²´ë¥¼ ì¸ì¤í´ì¤ë¡ ì¸ìíëì§ ì¬ë¶ë¥¼ íì¸í기 ìí´ ì¬ì©íë ë©ìëì ì¤ë¥¸ìª½ í¼ì°ì°ììì ì´ ì¬ë³¼ì ì°¾ìµëë¤.
class Array1 {
static [Symbol.hasInstance](instance) {
return Array.isArray(instance);
}
}
console.log([] instanceof Array1);
// Expected output: true
ê°
ì ìë ¤ì§ ì¬ë³¼ @@hasInstance
.
instanceof
ì°ì°ìë ë¤ì ìê³ ë¦¬ì¦ì ì¬ì©íì¬ object instanceof constructor
ì ë°í ê°ì ê³ì°í©ëë¤.
constructor
ì @@hasInstance
ë©ìëê° ìë ê²½ì°, 첫 ë²ì§¸ ì¸ìë¡ object
를 ì¬ì©íì¬ í¸ì¶íê³ ë¶ë¦¬ì¸ì¼ë¡ ê°ì ë³íë 결과를 ë°íí©ëë¤. constructor
ê° ê°ì²´ê° ìëê±°ë constructor[@@hasInstance]
ê° null
, undefined
, í¨ì ì¤ íëê° ìë ê²½ì° TypeError
ê° ë°ìí©ëë¤.
ê·¸ë ì§ ìì¼ë©´, constructor
ì @@hasInstance
ë©ìëê° ìë ê²½ì°(constructor[@@hasInstance]
ê° null
ëë undefined
), Function.prototype[@@hasInstance]
ì ëì¼í ìê³ ë¦¬ì¦ì ì¬ì©íì¬ ê²°ê³¼ë¥¼ ê²°ì í©ëë¤. constructor
ê° í¨ìê° ìë ê²½ì° TypeError
ê° ë°ìí©ëë¤.
모ë í¨ìë 기본ì ì¼ë¡ Function.prototype
ì ììí기 ë문ì, ëë¶ë¶ì ê²½ì° Function.prototype[@@hasInstance]
ë©ìëë ì¤ë¥¸ìª½ì´ í¨ìì¸ ê²½ì° instanceof
ì ëìì ì§ì í©ëë¤.
ì를 ë¤ì´ ë¤ìê³¼ ê°ì´ ì¬ì©ì ì ì instanceof
ëìì 구íí ì ììµëë¤.
class MyArray {
static [Symbol.hasInstance](instance) {
return Array.isArray(instance);
}
}
console.log([] instanceof MyArray); // true
function MyArray() {}
Object.defineProperty(MyArray, Symbol.hasInstance, {
value(instance) {
return Array.isArray(instance);
},
});
console.log([] instanceof MyArray); // true
ê°ì²´ì ì¸ì¤í´ì¤ ê²ì¬í기
instanceof
í¤ìë를 ì¬ì©íì¬ ê°ì²´ê° í´ëì¤ì ì¸ì¤í´ì¤ ì¬ë¶ë¥¼ íì¸í ì ìë ê²ê³¼ ê°ì ë°©ë²ì¼ë¡ Symbol.hasInstance
를 ì¬ì©íì¬ ëì¼í ê²ì¬ë¥¼ ìíí ì ììµëë¤.
class Animal {
constructor() {}
}
const cat = new Animal();
console.log(Animal[Symbol.hasInstance](cat)); // true
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4