Skip to content

Commit 0c5f51b

Browse files
committed
[번역] Part1 9.6 instanceof 충돌 해결 및 미번역분 번역
1 parent f44cc4b commit 0c5f51b

1 file changed

Lines changed: 8 additions & 21 deletions

File tree

1-js/09-classes/06-instanceof/article.md

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22

33
`instanceof` 연산자를 사용하면 객체가 특정 클래스에 속하는지 아닌지를 확인할 수 있습니다. `instanceof`는 상속 관계도 확인해줍니다.
44

5-
<<<<<<< HEAD
6-
확인 기능은 다양한 곳에서 쓰이는데, 이번 챕터에선 `instanceof`를 사용해 인수의 타입에 따라 이를 다르게 처리하는 *다형적인(polymorphic)* 함수를 만드는데 사용해보겠습니다.
7-
=======
8-
Such a check may be necessary in many cases. For example, it can be used for building a *polymorphic* function, the one that treats arguments differently depending on their type.
9-
>>>>>>> upstream/master
5+
확인 기능은 다양한 곳에서 쓰이는데, 예를 들어 `instanceof`를 사용하면 인수의 타입에 따라 이를 다르게 처리하는 *다형적인(polymorphic)* 함수를 만들 수 있습니다.
106

117
## instanceof 연산자 [#ref-instanceof]
128

@@ -59,13 +55,8 @@ alert( arr instanceof Object ); // true
5955
예시:
6056

6157
```js run
62-
<<<<<<< HEAD
63-
// canEat 프로퍼티가 있으면 animal이라고 판단할 수 있도록
64-
// instanceOf의 로직을 직접 설정합니다.
65-
=======
66-
// set up instanceof check that assumes that
67-
// anything with canEat property is an animal
68-
>>>>>>> upstream/master
58+
// canEat 프로퍼티가 있으면 animal이라고 판단하도록
59+
// instanceof 로직을 직접 설정합니다.
6960
class Animal {
7061
static [Symbol.hasInstance](obj) {
7162
if (obj.canEat) return true;
@@ -77,13 +68,9 @@ alert( arr instanceof Object ); // true
7768
alert(obj instanceof Animal); // true, Animal[Symbol.hasInstance](obj)가 호출됨
7869
```
7970

80-
<<<<<<< HEAD
81-
2. 그런데, 대부분의 클래스엔 `Symbol.hasInstance`가 구현되어있지 않습니다. 이럴 땐 일반적인 로직이 사용됩니다. `obj instanceOf Class``Class.prototype``obj` 프로토타입 체인 상의 프로토타입 중 하나와 일치하는지 확인합니다.
82-
=======
83-
2. Most classes do not have `Symbol.hasInstance`. In that case, the standard logic is used: `obj instanceof Class` checks whether `Class.prototype` is equal to one of the prototypes in the `obj` prototype chain.
84-
>>>>>>> upstream/master
71+
2. 그런데 대부분의 클래스에는 `Symbol.hasInstance`가 구현되어 있지 않습니다. 이 경우 일반적인 로직이 사용됩니다. `obj instanceof Class``Class.prototype``obj` 프로토타입 체인 상의 프로토타입 중 하나와 일치하는지 확인합니다.
8572

86-
비교는 차례 차례 진행됩니다.
73+
비교는 차례차례 진행됩니다.
8774
```js
8875
obj.__proto__ === Class.prototype?
8976
obj.__proto__.__proto__ === Class.prototype?
@@ -148,7 +135,7 @@ alert(obj); // [object Object]
148135
alert(obj.toString()); // 같은 결과가 출력됨
149136
```
150137

151-
이렇게 `[object Object]`가 되는 이유는 `toString`구현방식 때문입니다. 그런데 `toString``toString`을 더 강력하게 만들어주는 기능이 숨겨져 있습니다. `toString`의 숨겨진 기능을 사용하면 확장 `typeof`, `instanceof`의 대안을 만들 수 있습니다.
138+
이렇게 `[object Object]`가 되는 이유는 `toString`구현 방식 때문입니다. 그런데 `toString``toString`을 더 강력하게 만들어주는 기능이 숨겨져 있습니다. `toString`의 숨겨진 기능을 사용하면 확장 `typeof`, `instanceof`의 대안을 만들 수 있습니다.
152139

153140
아직 감이 안 잡히시겠지만, 구체적으로 설명하겠습니다.
154141

@@ -159,7 +146,7 @@ alert(obj.toString()); // 같은 결과가 출력됨
159146
- `null` -- `[object Null]`
160147
- `undefined` -- `[object Undefined]`
161148
- 배열 -- `[object Array]`
162-
- 그외 -- 커스터마이징 가능
149+
- 그 외 -- 커스터마이징 가능
163150

164151
예시:
165152

@@ -210,7 +197,7 @@ alert( {}.toString.call(window) ); // [object Window]
210197
alert( {}.toString.call(new XMLHttpRequest()) ); // [object XMLHttpRequest]
211198
```
212199
213-
실행 결과에서 보듯이 호스트 환경 고유 객체의 `Symbol.toStringTag` 값은 `[object ...]`쌓여진 값과 동일합니다.
200+
실행 결과에서 보듯이 호스트 환경 고유 객체의 `Symbol.toStringTag` 값은 `[object ...]`쌓인 값과 동일합니다.
214201
215202
이처럼 'typeof' 연산자의 강력한 변형들(`toString``toStringTag` - 옮긴이)은 원시 자료형뿐만 아니라 내장 객체에도 사용할 수 있습니다. 그리고 커스터마이징까지 가능합니다.
216203

0 commit comments

Comments
 (0)