-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ko] JavaScript: Array.with(),Symbol.toString() 추가 (#13751)
- Array.prototype.with() 추가 - Symbol.prototype.toString() 추가
- Loading branch information
Showing
2 changed files
with
174 additions
and
0 deletions.
There are no files selected for viewing
102 changes: 102 additions & 0 deletions
102
files/ko/web/javascript/reference/global_objects/array/with/index.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
--- | ||
title: Array.prototype.with() | ||
slug: Web/JavaScript/Reference/Global_Objects/Array/with | ||
l10n: | ||
sourceCommit: 6bd17cb9cbc2d11163617b9f71706e93fdd743c8 | ||
--- | ||
|
||
{{JSRef}} | ||
|
||
{{jsxref("Array")}} 인스턴스의 **`with()`** 메서드는 주어진 인덱스의 값을 변경하기 위해 [대괄호 표기법](/ko/docs/Web/JavaScript/Reference/Operators/Property_accessors#bracket_notation)을 사용하는 것의 [복사](/ko/docs/Web/JavaScript/Reference/Global_Objects/Array#copying_methods_and_mutating_methods) 버전입니다. 이 함수는 지정된 인덱스의 요소가 지정된 값으로 대체된 새 배열을 반환합니다. | ||
|
||
## 구문 | ||
|
||
```js-nolint | ||
array.with(index, value) | ||
``` | ||
|
||
### 매개변수 | ||
|
||
- `index` | ||
- : 배열을 변경할 0 기반 인덱스이며 [정수로 변환](/ko/docs/Web/JavaScript/Reference/Global_Objects/Number#integer_conversion)되는 값입니다. | ||
- 음수 인덱스는 배열의 끝부터 역산합니다 — `index < 0`인 경우 `index + array.length`가 사용됩니다. | ||
- 정규화 후 인덱스가 범위를 벗어나면, {{jsxref("RangeError")}}가 발생합니다. | ||
- `value` | ||
- : 주어진 인덱스에 할당할 값입니다. | ||
|
||
### 반환 값 | ||
|
||
`index`의 요소 값이 `value`로 대체된 새로운 배열. | ||
|
||
### 예외 | ||
|
||
- {{jsxref("RangeError")}} | ||
- : `index > array.length` 혹은 `index < -array.length` 일때 발생합니다. | ||
|
||
## 설명 | ||
|
||
`with()` 메서드는 배열에서 주어진 인덱스의 값을 변경하여, 주어진 인덱스에 있는 요소가 주어진 값으로 대체된 새 배열을 반환합니다. 원래 배열은 수정되지 않습니다. 이를 통해 조작을 수행하는 동안 배열 메서드를 연속으로 이어서 호출 할 수 있습니다. | ||
|
||
`with()` 메서드는 [희소 배열](/ko/docs/Web/JavaScript/Guide/Indexed_collections#희소배열)을 생성하지 않습니다. 만약 원래 배열이 희소 배열인 경우 빈 슬롯은 새로운 배열에서 `undefined`으로 대체됩니다. | ||
|
||
`with()` 메서드는 [제네릭](/ko/docs/Web/JavaScript/Reference/Global_Objects/Array#generic_array_methods) 메서드입니다. 이 메서드는 `this` 값에 `length` 속성과 정수 키 속성 만을 필요로 합니다. | ||
|
||
## 예제 | ||
|
||
### 하나의 요소만 변경한채로 새로운 배열을 만들기 | ||
|
||
```js | ||
const arr = [1, 2, 3, 4, 5]; | ||
console.log(arr.with(2, 6)); // [1, 2, 6, 4, 5] | ||
console.log(arr); // [1, 2, 3, 4, 5] | ||
``` | ||
|
||
### 배열 메서드 연속하여 연결하기 | ||
|
||
`with()` 메서드를 사용하면 배열의 단일 요소를 업데이트한 후 다른 배열 메서드를 적용할 수 있습니다. | ||
|
||
```js | ||
const arr = [1, 2, 3, 4, 5]; | ||
console.log(arr.with(2, 6).map((x) => x ** 2)); // [1, 4, 36, 16, 25] | ||
``` | ||
|
||
### 희소 배열에서 with() 사용하기 | ||
|
||
`with()` 메서드는 언제나 밀집 배열을 생성합니다. | ||
|
||
```js | ||
const arr = [1, , 3, 4, , 6]; | ||
console.log(arr.with(0, 2)); // [2, undefined, 3, 4, undefined, 6] | ||
``` | ||
|
||
### 배열이 아닌 객체에서 with() 호출하기 | ||
|
||
`with()` 메서드는 `this`의 `length` 속성을 읽습니다. 그리고 `this`의 정수 키 속성을 읽어서 새 배열에 쓰고, | ||
`value`는 주어진 `index`에 씁니다. | ||
|
||
```js | ||
const arrayLike = { | ||
length: 3, | ||
unrelated: "foo", | ||
0: 5, | ||
2: 4, | ||
}; | ||
console.log(Array.prototype.with.call(arrayLike, 0, 1)); | ||
// [ 1, undefined, 4 ] | ||
``` | ||
|
||
## 명세서 | ||
|
||
{{Specifications}} | ||
|
||
## 브라우저 호환성 | ||
|
||
{{Compat}} | ||
|
||
## 같이 보기 | ||
|
||
- [Polyfill of `Array.prototype.with` in `core-js`](https://github.com/zloirock/core-js#change-array-by-copy) | ||
- {{jsxref("Array.prototype.toReversed()")}} | ||
- {{jsxref("Array.prototype.toSorted()")}} | ||
- {{jsxref("Array.prototype.toSpliced()")}} | ||
- {{jsxref("TypedArray.prototype.with()")}} |
72 changes: 72 additions & 0 deletions
72
files/ko/web/javascript/reference/global_objects/symbol/tostring/index.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
--- | ||
title: Symbol.prototype.toString() | ||
slug: Web/JavaScript/Reference/Global_Objects/Symbol/toString | ||
l10n: | ||
sourceCommit: f3df52530f974e26dd3b14f9e8d42061826dea20 | ||
--- | ||
|
||
{{JSRef}} | ||
|
||
**`toString()`** 메서드는 지정된 심볼 값을 나타내는 문자열을 반환합니다. | ||
|
||
{{EmbedInteractiveExample("pages/js/symbol-prototype-tostring.html")}} | ||
|
||
## 구문 | ||
|
||
```js-nolint | ||
toString() | ||
``` | ||
|
||
### 반환 값 | ||
|
||
지정된 심볼 값을 나타내는 문자열. | ||
|
||
## 설명 | ||
|
||
{{jsxref("Symbol")}} 객체는 {{jsxref("Object")}}의 `toString` 메서드를 재정의하며, | ||
{{jsxref("Object.prototype.toString()")}}을 상속하지 않습니다. | ||
`Symbol` 값의 경우 `toString` 메서드는 `"Symbol(description)"` 형식의 설명 문자열을 반환하며, | ||
여기서 `description`은 심볼의 [설명](/ko/docs/Web/JavaScript/Reference/Global_Objects/Symbol/description)입니다. | ||
|
||
`toString()` 메서드는 `this` 값이 `Symbol` 원시 값 또는 래퍼 객체여야 합니다. 이 외의 `this` 값에 대해서는 심볼 값으로 강제 변환하지 않고 {{jsxref("TypeError")}}를 던집니다. | ||
|
||
`Symbol`에는 [`[@@toPrimitive]()`](/ko/docs/Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive) 메서드가 있기 때문에 `Symbol` 객체를 [문자열로 강제 변환](/ko/docs/Web/JavaScript/Reference/Global_Objects/String#string_coercion)할 때 이 메서드가 항상 `toString()`보다 우선합니다. | ||
그러나 `Symbol.prototype[@@toPrimitive]()`는 심볼 원시 값을 반환하고 심볼 원시 값은 문자열로 암시적으로 변환될 때 {{jsxref("TypeError")}}가 발생하기 때문에 언어에서 `toString()` 메서드는 절대 암시적으로 호출되지 않습니다. | ||
심볼을 문자열화하려면 해당 심볼의 `toString()` 메서드를 명시적으로 호출하거나 [`String()`](/ko/docs/Web/JavaScript/Reference/Global_Objects/String/String#using_string_to_stringify_a_symbol) 함수를 사용해야 합니다. | ||
|
||
## 예제 | ||
|
||
### toString() 사용하기 | ||
|
||
```js | ||
Symbol("desc").toString(); // "Symbol(desc)" | ||
|
||
// 잘 알려진 심볼 | ||
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)" | ||
|
||
// 글로벌 심볼 | ||
Symbol.for("foo").toString(); // "Symbol(foo)" | ||
``` | ||
|
||
### 암시적 toString() 호출 | ||
|
||
JavaScript가 심볼 래퍼 객체에서 [`[@@toPrimitive]()`](/ko/docs/Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive) 대신 `toString()`을 암시적으로 호출하도록 하는 유일한 방법은 `@@toPrimitive` 메서드를 먼저 [삭제](/ko/docs/Web/JavaScript/Reference/Operators/delete) 처리하는 방법 뿐 입니다. | ||
|
||
> **주의:** 실제로 이 작업을 수행하지 마세요. 정확히 무엇을 하고 있는지 알지 못하면 기본 제공 객체를 변경하지 마세요. | ||
```js | ||
delete Symbol.prototype[Symbol.toPrimitive]; | ||
console.log(`${Object(Symbol("foo"))}`); // "Symbol(foo)" | ||
``` | ||
|
||
## 명세서 | ||
|
||
{{Specifications}} | ||
|
||
## 브라우저 호환성 | ||
|
||
{{Compat}} | ||
|
||
## 같이 보기 | ||
|
||
- {{jsxref("Object.prototype.toString()")}} |