Skip to content

Commit 962a100

Browse files
authored
[문서] C09 충돌 해결 및 미번역분 번역 (#1856)
* [객체와 메서드, this] 충돌 해결 (본문) * [new 연산자와 생성자 함수] 충돌 해결 (본문) * [new 연산자와 생성자 함수] 충돌 해결 (함수 두 개로 동일한 객체 만들기 과제) * [new 연산자와 생성자 함수] 충돌 해결 (계산기 만들기 과제) * [옵셔널 체이닝] 충돌 해결 (본문) * [심볼형] 충돌 해결 (본문) * [객체를 원시형으로 변환] 충돌 해결 (본문) * [원시값의 메서드] 충돌 해결 (본문) * [원시값의 메서드] 충돌 해결 (문자열에 프로퍼티를 추가할 수 있을까요? 과제) * [숫자형] 충돌 해결 (본문) * [숫자형] 충돌 해결 (`6.35.toFixed(1) == 6.3`인 이유 과제 해답) * [심볼형] 리뷰 반영 — 원문에서 삭제된 문장 정리 * [옵셔널 체이닝] 리뷰 반영 — `user.address`에 백틱 추가 * [옵셔널 체이닝] 리뷰 반영 — 리스트 마커 `*` → `-` 통일 * [옵셔널 체이닝] 리뷰 반영 — 누락된 문장 복원 * [객체를 원시형으로 변환] 리뷰 반영 — 중복 설명 삭제 * [객체와 메서드, this] 리뷰 반영 — 부연 설명 보완 * [객체와 메서드, this] 리뷰 반영 — 에러 메시지 수정 및 마커 추가 * [new 연산자와 생성자 함수] 리뷰 반영 — `--` 정리 및 문장 다듬기 (계산기 만들기 과제) * [옵셔널 체이닝] 리뷰 반영 — 문단 분리 및 예시 코드 보강 * [심볼형] 리뷰 반영 — 코드블록 앞 빈 줄 추가 및 '숨김 프로퍼티' 단락 정리 * [객체를 원시형으로 변환] 리뷰 반영 — 누락 문장 보강 및 단락 구조 정리 * [숫자형] 리뷰 반영 — 코드블록 닫힘 표시 및 리스트 마커 정리 * [옵셔널 체이닝] 리뷰 반영 — 추가 피드백 적용 * [심볼형] 리뷰 반영 — 추가 피드백 적용 * [객체를 원시형으로 변환] 리뷰 반영 — 추가 피드백 적용 * [숫자형] 리뷰 반영 — 추가 피드백 적용 * [숫자형] 충돌 해결 * [옵셔널 체이닝] 충돌 해결 * [객체를 원시형으로 변환] 충돌 해결
1 parent b28ae8f commit 962a100

11 files changed

Lines changed: 139 additions & 661 deletions

File tree

1-js/04-object-basics/04-object-methods/article.md

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,11 @@ user.sayHi = function() {
3232
user.sayHi(); // 안녕하세요!
3333
```
3434

35-
<<<<<<< HEAD
3635
함수 표현식으로 함수를 만들고, 객체 프로퍼티 `user.sayHi`에 함수를 할당해 주었습니다.
3736

3837
이제 객체에 할당된 함수를 호출하면 user가 인사를 해줍니다.
3938

4039
이렇게 객체 프로퍼티에 할당된 함수를 *메서드(method)* 라고 부릅니다.
41-
=======
42-
Here we've just used a Function Expression to create a function and assign it to the property `user.sayHi` of the object.
43-
44-
Then we can call it as `user.sayHi()`. The user can now speak!
45-
46-
A function that is a property of an object is called its *method*.
47-
>>>>>>> upstream/master
4840

4941
위 예시에선 `user`에 할당된 `sayHi`가 메서드이죠.
5042

@@ -58,13 +50,8 @@ let user = {
5850
*!*
5951
// 함수 선언
6052
function sayHi() {
61-
<<<<<<< HEAD
6253
alert("안녕하세요!");
6354
};
64-
=======
65-
alert("Hello!");
66-
}
67-
>>>>>>> upstream/master
6855

6956
// 선언된 함수를 메서드로 등록
7057
user.sayHi = sayHi;
@@ -94,11 +81,7 @@ user = {
9481
// 단축 구문을 사용하니 더 깔끔해 보이네요.
9582
user = {
9683
*!*
97-
<<<<<<< HEAD
9884
sayHi() { // "sayHi: function()"과 동일합니다.
99-
=======
100-
sayHi() { // same as "sayHi: function(){...}"
101-
>>>>>>> upstream/master
10285
*/!*
10386
alert("Hello");
10487
}
@@ -107,11 +90,7 @@ user = {
10790

10891
위처럼 `function`을 생략해도 메서드를 정의할 수 있습니다.
10992

110-
<<<<<<< HEAD
111-
일반적인 방법과 단축 구문을 사용한 방법이 완전히 동일하진 않습니다. 객체 상속과 관련된 미묘한 차이가 존재하는데 지금으로선 이 차이가 중요하지 않기 때문에 넘어가도록 하겠습니다.
112-
=======
113-
To tell the truth, the notations are not fully identical. There are subtle differences related to object inheritance (to be covered later), but for now they do not matter. In almost all cases, the shorter syntax is preferred.
114-
>>>>>>> upstream/master
93+
일반적인 방법과 단축 구문을 사용한 방법이 완전히 동일하진 않습니다. 객체 상속과 관련된 미묘한 차이가 존재하는데 지금으로선 이 차이가 중요하지 않기 때문에 넘어가도록 하겠습니다. 대부분의 경우에는 더 짧은 단축 구문이 선호됩니다.
11594

11695
## 메서드와 this
11796

@@ -180,25 +159,16 @@ let user = {
180159

181160
let admin = user;
182161
user = null; // user를 null로 덮어씁니다.
183-
184-
<<<<<<< HEAD
185-
admin.sayHi(); // sayHi()가 엉뚱한 객체를 참고하면서 에러가 발생했습니다.
186-
=======
187162
*!*
188163
admin.sayHi(); // TypeError: Cannot read property 'name' of null
189164
*/!*
190-
>>>>>>> upstream/master
191165
```
192166

193167
`alert` 함수가 `user.name` 대신 `this.name`을 인수로 받았다면 에러가 발생하지 않았을 겁니다.
194168

195169
## 자유로운 this
196170

197-
<<<<<<< HEAD
198171
자바스크립트의 `this`는 다른 프로그래밍 언어의 `this`와 동작 방식이 다릅니다. 자바스크립트에선 모든 함수에 `this`를 사용할 수 있습니다.
199-
=======
200-
In JavaScript, keyword `this` behaves unlike most other programming languages. It can be used in any function, even if it's not a method of an object.
201-
>>>>>>> upstream/master
202172

203173
아래와 같이 코드를 작성해도 문법 에러가 발생하지 않습니다.
204174

1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@ importance: 2
44

55
# 함수 두 개로 동일한 객체 만들기
66

7-
<<<<<<< HEAD
87
`new A()==new B()`가 성립 가능한 함수 `A``B`를 만드는 게 가능할까요?
9-
=======
10-
Is it possible to create functions `A` and `B` so that `new A() == new B()`?
11-
>>>>>>> upstream/master
128

139
```js no-beautify
1410
function A() { ... }

1-js/04-object-basics/06-constructor-new/2-calculator-constructor/task.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,9 @@ importance: 5
66

77
아래와 같은 세 개의 메서드를 가진 생성자 함수, `Calculator`를 만들어보세요.
88

9-
<<<<<<< HEAD
10-
- `read()` -- `prompt` 함수를 이용해 사용자로부터 값 두 개를 받고, 이를 객체 프로퍼티에 저장합니다.
11-
- `sum()` -- 프로퍼티에 저장된 값 두 개를 더한 후 반환합니다.
12-
- `mul()` -- 프로퍼티에 저장된 값 두 개를 곱한 후 반환합니다.
13-
=======
14-
- `read()` prompts for two values and saves them as object properties with names `a` and `b` respectively.
15-
- `sum()` returns the sum of these properties.
16-
- `mul()` returns the multiplication product of these properties.
17-
>>>>>>> upstream/master
9+
- `read()` 사용자로부터 값 두 개를 받고, 이를 객체 프로퍼티에 저장합니다.
10+
- `sum()` 프로퍼티에 저장된 값 두 개를 더한 후 반환합니다.
11+
- `mul()` 프로퍼티에 저장된 값 두 개를 곱한 후 반환합니다.
1812

1913
예시:
2014

1-js/04-object-basics/06-constructor-new/article.md

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
# new 연산자와 생성자 함수
22

3-
<<<<<<< HEAD
43
객체 리터럴 `{...}` 을 사용하면 객체를 쉽게 만들 수 있습니다. 그런데 개발을 하다 보면 유사한 객체를 여러 개 만들어야 할 때가 생기곤 합니다. 복수의 사용자, 메뉴 내 다양한 아이템을 객체로 표현하려고 하는 경우가 그렇죠.
5-
=======
6-
The regular `{...}` syntax allows us to create one object. But often we need to create many similar objects, like multiple users or menu items and so on.
7-
>>>>>>> upstream/master
84

95
`'new'` 연산자와 생성자 함수를 사용하면 유사한 객체 여러 개를 쉽게 만들 수 있습니다.
106

@@ -68,17 +64,10 @@ let user = {
6864

6965
생성자의 의의는 바로 여기에 있습니다. 재사용할 수 있는 객체 생성 코드를 구현하는 것이죠.
7066

71-
<<<<<<< HEAD
7267
잠깐! 모든 함수는 생성자 함수가 될 수 있다는 점을 잊지 마시기 바랍니다. `new`를 붙여 실행한다면 어떤 함수라도 위에 언급된 알고리즘이 실행됩니다. 이름의 '첫 글자가 대문자'인 함수는 `new`를 붙여 실행해야 한다는 점도 잊지 마세요. 공동의 약속이니까요.
7368

7469
````smart header="new function() { ... }"
7570
재사용할 필요가 없는 복잡한 객체를 만들어야 한다고 해봅시다. 많은 양의 코드가 필요할 겁니다. 이럴 땐 아래와 같이 코드를 익명 생성자 함수로 감싸주는 방식을 사용할 수 있습니다.
76-
=======
77-
Let's note once again -- technically, any function (except arrow functions, as they don't have `this`) can be used as a constructor. It can be run with `new`, and it will execute the algorithm above. The "capital letter first" is a common agreement, to make it clear that a function is to be run with `new`.
78-
79-
````smart header="new function() { ... }"
80-
If we have many lines of code all about creation of a single complex object, we can wrap them in an immediately called constructor function, like this:
81-
>>>>>>> upstream/master
8271
8372
```js
8473
// create a function and immediately call it with new
@@ -92,11 +81,7 @@ let user = new function() {
9281
};
9382
```
9483
95-
<<<<<<< HEAD
9684
위 생성자 함수는 익명 함수이기 때문에 어디에도 저장되지 않습니다. 처음 만들 때부터 단 한 번만 호출할 목적으로 만들었기 때문에 재사용이 불가능합니다. 이렇게 익명 생성자 함수를 이용하면 재사용은 막으면서 코드를 캡슐화 할 수 있습니다.
97-
=======
98-
This constructor can't be called again, because it is not saved anywhere, just created and called. So this trick aims to encapsulate the code that constructs the single object, without future reuse.
99-
>>>>>>> upstream/master
10085
````
10186

10287
## new.target과 생성자 함수
@@ -107,11 +92,7 @@ This constructor can't be called again, because it is not saved anywhere, just c
10792

10893
`new.target` 프로퍼티를 사용하면 함수가 `new`와 함께 호출되었는지 아닌지를 알 수 있습니다.
10994

110-
<<<<<<< HEAD
11195
일반적인 방법으로 함수를 호출했다면 `new.target`은 undefined를 반환합니다. 반면 `new`와 함께 호출한 경우엔 `new.target`은 함수 자체를 반환해줍니다.
112-
=======
113-
It is undefined for regular calls and equals the function if called with `new`:
114-
>>>>>>> upstream/master
11596

11697
```js run
11798
function User() {
@@ -189,13 +170,8 @@ alert( new SmallUser().name ); // 원숭이
189170

190171
`return`문이 있는 생성자 함수는 거의 없습니다. 여기선 튜토리얼의 완성도를 위해 특이 케이스를 소개해보았습니다.
191172

192-
<<<<<<< HEAD
193173
````smart header="괄호 생략하기"
194174
인수가 없는 생성자 함수는 괄호를 생략해 호출할 수 있습니다.
195-
=======
196-
````smart header="Omitting parentheses"
197-
By the way, we can omit parentheses after `new`:
198-
>>>>>>> upstream/master
199175
200176
```js
201177
let user = new User; // <-- 괄호가 없음

0 commit comments

Comments
 (0)