Function.prototype[@@hasInstance]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2017ë 4ì.
Function ì¸ì¤í´ì¤ì [@@hasInstance]() ë©ìëë ìì±ì í¨ìê° ê°ì²´ë¥¼ ìì±ìì ì¸ì¤í´ì¤ ì¤ íëë¡ ì¸ìíëì§ ì¬ë¶ë¥¼ ê²°ì íë 기본 ì 차를 ì§ì í©ëë¤.
ì´ ë©ìëë instanceof ì°ì°ìì ìí´ í¸ì¶ë©ëë¤.
구문
func[Symbol.hasInstance](value)
매ê°ë³ì
value- :íê°í ê°ì²´ì
ëë¤. ìì ê°ì íì
false를 ë°íí©ëë¤.
- :íê°í ê°ì²´ì
ëë¤. ìì ê°ì íì
ë°í ê°
func.prototypeì´ valueì íë¡í íì
ì²´ì¸ì ìì¼ë©´ true, ê·¸ë ì§ ìì¼ë©´ false를 ë°íí©ëë¤.
valueê° ê°ì²´ê° ìëê±°ë thisê° í¨ìê° ìë ê²½ì° íì false를 ë°íí©ëë¤. thisê° ë°ì¸ë©ë í¨ìì¸ ê²½ì°, valueì ëì í¨ìì ëí instanceof íê° ê²°ê³¼ë¥¼ ë°íí©ëë¤.
ìì¸
TypeError-
thisê° ë°ì¸ë©ë í¨ìê° ìëê³this.prototypeì´ ê°ì²´ê° ìë ê²½ì° ë°ìí©ëë¤.
ì¤ëª
instanceof ì°ì°ìë [@@hasInstance]() ë©ìëê° ì¡´ì¬íë©´ ì°íì ì´ ë©ìë를 í¸ì¶í©ëë¤. 모ë í¨ìë 기본ì ì¼ë¡ Function.prototypeì ììíë¯ë¡ [@@hasInstance]() ë©ìë를 모ë ê°ì§ê² ë©ëë¤. ë°ë¼ì ëë¶ë¶ì ê²½ì° ì°íì´ í¨ìì¸ ê²½ì° Function.prototype[@@hasInstance] ë©ìëê° instanceofì ëìì ì§ì í©ëë¤. ì´ ë©ìëë instanceof ì°ì°ìì 기본 ëìì 구íí©ëë¤(constructorì @@hasInstance ë©ìëê° ìì ëì ëì¼í ìê³ ë¦¬ì¦).
ëë¶ë¶ì ë©ìëì ë¬ë¦¬ Function.prototype[@@hasInstance]() ìì±ì ì¤ì í ì ìê³ ì¸ ì ììµëë¤. ì´ë ë°ì¸ë©ë í¨ìì 기본 ëì í¨ì를 ê°ì ¸ì¬ ì ìëë¡ í기 ìí ë³´ì 기ë¥ì
ëë¤. ì를 ë¤ì´ ì´ StackOverflow ëµë³ì ì°¸ê³ íì기 ë°ëëë¤.
ìì
>기본 instanceof ëìì¼ë¡ ëë리기
ì´ ë©ìë를 ì§ì í¸ì¶í íìë ê±°ì ììµëë¤. ëì ì´ ë©ìëë instanceof ì°ì°ìê° í¸ì¶í©ëë¤. ì¼ë°ì ì¼ë¡ ë ê²°ê³¼ë ëì¼í ê²ì¼ë¡ ììí´ì¼ í©ëë¤.
class Foo {}
const foo = new Foo();
console.log(foo instanceof Foo === Foo[Symbol.hasInstance](foo)); // true
기본ì ì¸ instanceof ëìì í¸ì¶íê³ ì¶ì§ë§ ìì±ìì ì¬ì ìë [@@hasInstance]() ë©ìëê° ìëì§ ì ì ìë ê²½ì° ì´ ë©ìë를 ì¬ì©í ì ììµëë¤.
class Foo {
static [Symbol.hasInstance](value) {
// ë§ì¶¤ 구í
return false;
}
}
const foo = new Foo();
console.log(foo instanceof Foo); // false
console.log(Function.prototype[Symbol.hasInstance].call(Foo, foo)); // true
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-function.prototype-%symbol.hasinstance%> |