Skip to content

Commit 1f166ea

Browse files
[함수의 prototype 프로퍼티] 번역 보완
1 parent a62a1b0 commit 1f166ea

File tree

1 file changed

+13
-13
lines changed
  • 1-js/08-prototypes/02-function-prototype

1 file changed

+13
-13
lines changed

1-js/08-prototypes/02-function-prototype/article.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
`new F()`와 같은 생성자 함수를 이용하면 새로운 객체를 만들 수 있다는 걸 앞서 배운 바 있습니다.
44

5-
`F.prototype`객체라면 `new` 연산자는 `F.prototype`을 사용해 새롭게 생성된 객체의 [[Prototype]]을 설정합니다.
5+
그런데 `F.prototype`객체면 `new` 연산자는 `F.prototype`을 사용해 새롭게 생성된 객체의 [[Prototype]]을 설정합니다.
66

77
```smart
8-
자바스크립트가 처음 만들어졌을 프로토타입 기반 상속이 주요 기능 중 하나였습니다.
8+
자바스크립트가 만들어졌을 때는 프로토타입 기반 상속이 주요 기능 중 하나였습니다.
99
1010
그런데 과거엔 프로로타입에 직접 접근할 방법이 없었습니다. 그나마 믿고 사용할 수 있었던 방법은 이번 챕터에서 설명할 생성자 함수의 `"prototype"` 프로퍼티를 이용하는 방법뿐이었죠. 많은 스크립트가 아직 이 방법을 사용하는 이유가 여기에 있습니다.
1111
```
@@ -32,25 +32,25 @@ let rabbit = new Rabbit("White Rabbit"); // rabbit.__proto__ == animal
3232
alert( rabbit.eats ); // true
3333
```
3434

35-
`Rabbit.prototype = animal`은 "`new Rabbit`이 생성되었을 때, 이것의 `[[Prototype]]``animal`할당하라."라는 것을 의미합니다.
35+
`Rabbit.prototype = animal`은 "`new Rabbit`을 호출해 만든 새로운 객체의 `[[Prototype]]``animal`설정하라."라는 것을 의미합니다.
3636

37-
이를 그림으로 나타내봅시다.
37+
그림으로 나타내면 다음과 같습니다.
3838

3939
![](proto-constructor-animal-rabbit.svg)
4040

4141
그림에서 가로 화살표는 일반 프로퍼티인 `"prototype"`을, 세로 화살표는 `[[Prototype]]`을 나타냅니다. 세로 화살표는 `rabbit``animal`을 상속받았다는 것을 의미합니다.
4242

43-
```smart header="`F.prototype``new F`이 호출될 때만 사용됩니다."
44-
`F.prototype` 프로퍼티는 `new F`가 호출될 때만 사용되어 새롭게 만들어진 객체의 `[[Prototype]]`할당해줍니다. 이 작업 이후엔 `F.prototype`새로운 객체의 연관 관계가 사라집니다. `F.prototype`는 '한 번만 쓸 수 있는 선물'이라고 생각하시면 됩니다.
43+
```smart header="`F.prototype``new F`를 호출할 때만 사용됩니다."
44+
`F.prototype` 프로퍼티는 `new F`가 호출될 때만 사용됩니다. `new F`를 호출해 새롭게 만든 객체의 `[[Prototype]]`할당해 주죠. 할당 후엔 `F.prototype` 객체의 연관 관계가 사라집니다. `F.prototype`는 '한 번만 쓸 수 있는 이용권'이라고 생각하면 됩니다.
4545

46-
새로운 객체가 만들어진 이후에 `F.prototype` 프로퍼티가 바뀐다면(`F.prototype = <another object>`) `new F`로 만들어지는 새로운 객체는 또 다른 객체를 `[[Prototype]]`으로 갖게 됩니다. 다만, 기존에 있던 객체의 `[[Prototype]]`은 그대로 유지됩니다.
46+
새로운 객체가 만들어진 후에 `F.prototype` 프로퍼티가 바뀌면(`F.prototype = <another object>`) `new F`로 만들어지는 새로운 객체는 또 다른 객체(<another object>)를 `[[Prototype]]`으로 갖게 됩니다. 다만, 기존에 있던 객체의 `[[Prototype]]`은 그대로 유지됩니다.
4747
```
4848
4949
## 함수의 prototype 프로퍼티와 constructor 프로퍼티
5050
51-
개발자가 특별히 할당하지 않더라도 모든 함수는 "prototype" 프로퍼티를 갖습니다.
51+
개발자가 특별히 할당하지 않더라도 모든 함수는 `"prototype"` 프로퍼티를 갖습니다.
5252
53-
기본 프로퍼티인 `"prototype"`은 `constructor` 프로퍼티 하나만 있는 객체를 가리키는데, `constructor` 프로퍼티는 함수 자신을 가리킵니다.
53+
기본 프로퍼티인 `"prototype"`은 `constructor` 프로퍼티 하나만 있는 객체를 가리키는데, `constructor` 프로퍼티는 함수 자신을 가리킵니다.
5454
5555
이 관계를 코드와 그림으로 나타내면 다음과 같습니다.
5656
@@ -64,7 +64,7 @@ Rabbit.prototype = { constructor: Rabbit };
6464

6565
![](function-prototype-constructor.svg)
6666

67-
아래 코드를 실행해 이를 확인해봅시다.
67+
아래 코드를 실행해 직접 확인해봅시다.
6868

6969
```js run
7070
function Rabbit() {}
@@ -81,7 +81,7 @@ function Rabbit() {}
8181
// 기본 prototype:
8282
// Rabbit.prototype = { constructor: Rabbit }
8383

84-
let rabbit = new Rabbit(); // {constructor: Rabbit}에서 상속
84+
let rabbit = new Rabbit(); // {constructor: Rabbit}을 상속받음
8585

8686
alert(rabbit.constructor == Rabbit); // true (프로토타입을 거쳐 접근함)
8787
```
@@ -105,7 +105,7 @@ let rabbit2 = new rabbit.constructor("Black Rabbit");
105105
*/!*
106106
```
107107

108-
객체가 있는데 이 객체를 만들 때 어떤 생성자가 사용되었는지 알 수 없는 경우(예: 객체가 서드 파티 라이브러리에서 온 경우), 이 방식법을 유용하게 쓸 수 있습니다.
108+
객체가 있는데 이 객체를 만들 때 어떤 생성자가 사용되었는지 알 수 없는 경우(예: 객체가 서드 파티 라이브러리에서 온 경우), 이 방법을 유용하게 쓸 수 있습니다.
109109

110110
어느 방식을 사용해 객체를 만들든 `"constructor"`에서 가장 중요한 점은 다음과 같습니다.
111111

@@ -160,7 +160,7 @@ Rabbit.prototype = {
160160

161161
몇 가지 사항만 명확하게 이해하고 있으면 지금까지 배운 것들은 복잡하지 않습니다.
162162

163-
- `F.prototype` 프로퍼티(`[[prototype]]`과는 다름)는 `new F()`를 호출할 때 만들어지는 새로운 객체의 `[[Prototype]]`을 설정합니다.
163+
- `F.prototype` 프로퍼티는 `[[prototype]]`과는 다릅니다. `F.prototype`은 `new F()`를 호출할 때 만들어지는 새로운 객체의 `[[Prototype]]`을 설정합니다.
164164
- `F.prototype`의 값은 객체나 null만 가능합니다. 다른 값은 무시됩니다.
165165
- 지금까지 배운 내용은 생성자 함수에 `"prototype"`를 설정하고, 이 생성자 함수를 `new`를 사용해 호출할 때만 적용됩니다.
166166

0 commit comments

Comments
 (0)