You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/article.md
+31-31Lines changed: 31 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,16 @@
1
1
# 함수의 prototype 프로퍼티
2
2
3
-
`new F()`와 같은 생성자 함수를 이용하면 새로운 객체를 만들 수 있다는 걸 앞서 배운 바 있습니다.
3
+
우리는 리터럴 뿐만 아니라 `new F()`와 같은 생성자 '함수'로도 새로운 객체를 만들 수 있다는 배운 바 있습니다.
4
4
5
-
그런데 `F.prototype`이 객체면 `new` 연산자는 `F.prototype`을 사용해 새롭게 생성된 객체의 [[Prototype]]을 설정합니다.
5
+
이번 글에선 생성자 함수를 사용해 객체를 만든 경우의 프로토타입 동작 방식에 대해 알아보도록 하겠습니다. 생성자 함수로 객체를 만들었을 때 리터럴 방식과 차이점은 생성자 함수의 프로토타입이 객체인 경우에 `new` 연산자를 사용해 만든 객체는 생성자 함수의 프로토타입 정보를 사용해 [[Prototype]]을 설정한다는 것입니다.
6
6
7
7
```smart
8
-
자바스크립트가 만들어졌을 때는 프로토타입 기반 상속이 주요 기능 중 하나였습니다.
8
+
자바스크립트가 만들어졌을 당시엔 프로토타입 기반 상속이 자바스크립트의 주요 기능 중 하나였습니다.
9
9
10
10
그런데 과거엔 프로토타입에 직접 접근할 방법이 없었습니다. 그나마 믿고 사용할 수 있었던 방법은 이번 챕터에서 설명할 생성자 함수의 `"prototype"` 프로퍼티를 이용하는 방법뿐이었죠. 많은 스크립트가 아직 이 방법을 사용하는 이유가 여기에 있습니다.
11
11
```
12
12
13
-
`F.prototype`에서 `"prototype"`은 `F`에 정의된 일반 프로퍼티라는 점에 주의해 주시기 바랍니다. 앞서 배웠던 '프로토타입' 객체와 같아 보이지만 `F.prototype`에서 `"prototype"`은 이름만 같은 일반 프로퍼티입니다.
13
+
생성자 함수의 프로토타입을 의미하는 `F.prototype`에서 `"prototype"`은 `F`에 정의된 일반 프로퍼티라는 점에 주의해 글을 읽어 주시기 바랍니다. `F.prototype`에서 `"prototype"`은 바로 앞에서 배운 '프로토타입'과 비슷하게 들리겠지만 이름만 같을 뿐 실제론 다른 일반 프로퍼티입니다.
14
14
15
15
예시:
16
16
@@ -27,7 +27,7 @@ function Rabbit(name) {
27
27
Rabbit.prototype= animal;
28
28
*/!*
29
29
30
-
let rabbit =newRabbit("White Rabbit"); // rabbit.__proto__ == animal
30
+
let rabbit =newRabbit("흰 토끼"); // rabbit.__proto__ == animal
31
31
32
32
alert( rabbit.eats ); // true
33
33
```
@@ -38,19 +38,19 @@ alert( rabbit.eats ); // true
38
38
39
39

40
40
41
-
그림에서 가로 화살표는 일반 프로퍼티인 `"prototype"`을, 세로 화살표는 `[[Prototype]]`을 나타냅니다. 세로 화살표는 `rabbit`이 `animal`을 상속받았다는 것을 의미합니다.
41
+
여기서 가로 화살표는 일반 프로퍼티인 `"prototype"`을, 세로 화살표는 `[[Prototype]]`을 나타냅니다. 세로 화살표는 `rabbit`이 `animal`을 상속받았다는 것을 의미합니다.
42
42
43
43
```smart header="`F.prototype`은 `new F`를 호출할 때만 사용됩니다."
44
44
`F.prototype` 프로퍼티는 `new F`가 호출될 때만 사용됩니다. `new F`를 호출해 새롭게 만든 객체의 `[[Prototype]]`을 할당해 주죠.
45
45
46
-
새로운 객체가 만들어진 후에 `F.prototype` 프로퍼티가 바뀌면(`F.prototype = <another object>`) `new F`로 만들어지는 새로운 객체는 또 다른 객체를`[[Prototype]]`으로 갖게 됩니다. 다만, 기존에 있던 객체의 `[[Prototype]]`은 그대로 유지됩니다.
46
+
새로운 객체가 만들어진 후에 `F.prototype` 프로퍼티가 바뀌면(`F.prototype = <another object>`) `new F`로 만들어지는 또 다른 새로운 객체는 <anotherobject>를`[[Prototype]]`으로 갖게 됩니다. 다만, 기존에 있던 객체의 `[[Prototype]]`은 그대로 유지됩니다.
47
47
```
48
48
49
-
## 함수의 prototype 프로퍼티와 constructor 프로퍼티
49
+
## 함수의 디폴트 프로퍼티 prototype과 constructor 프로퍼티
50
50
51
51
개발자가 특별히 할당하지 않더라도 모든 함수는 `"prototype"` 프로퍼티를 갖습니다.
52
52
53
-
기본 프로퍼티인 `"prototype"`은 `constructor` 프로퍼티 하나만 있는 객체를 가리키는데, 이 `constructor` 프로퍼티는 함수 자신을 가리킵니다.
53
+
이 기본 프로퍼티 `"prototype"`은 `constructor` 프로퍼티 하나만 있는 객체를 가리키는데, 여기서 `constructor` 프로퍼티는 함수 자신을 가리킵니다.
0 commit comments