Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[정호] Object.values / Object.entries #7

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions src/ko/Object.values-Object.entries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# [Object.values](https://github.com/es-shims/Object.values) / [Object.entries](https://github.com/es-shims/Object.entries)

`Object.values`/`Object.entries` 에 대한 ECMAScript 제안, 사양 및 참조 구현.

[@ljharb](https://github.com/ljharb) 가 초안을 작성한 사양.

본 제안서는 [전체과정](https://tc39.github.io/process-document/)에서 [4단계](https://github.com/tc39/ecma262)에 있으며 ES2017에 포함될 예정입니다.

지정된 TC39 검토자: @wycats @littledan @rwaldron

[Engine Implementations(엔진 구현)](https://github.com/tc39/proposal-object-values-entries/issues/10)

## 이전 토론

- [TC39 회의록](https://github.com/rwaldron/tc39-notes/blob/c61f48cea5f2339a1ec65ca89827c8cff170779b/es6/2014-04/apr-9.md#51-objectentries-objectvalues)
- esdiscuss:
- [https://esdiscuss.org/topic/object-entries-object-values](https://esdiscuss.org/topic/object-entries-object-values)
- [https://esdiscuss.org/topic/es6-iteration-over-object-values](https://esdiscuss.org/topic/es6-iteration-over-object-values)
- [https://esdiscuss.org/topic/object-values-and-or-object-foreach](https://esdiscuss.org/topic/object-values-and-or-object-foreach) -> [https://esdiscuss.org/topic/iteration-was-re-object-values-and-or-object-foreach](https://esdiscuss.org/topic/iteration-was-re-object-values-and-or-object-foreach)
- [https://esdiscuss.org/topic/object-entries-in-2015](https://esdiscuss.org/topic/object-entries-in-2015)
- [https://esdiscuss.org/topic/providing-object-iterators-beyond-just-object-keys](https://esdiscuss.org/topic/providing-object-iterators-beyond-just-object-keys)

## 이론적 근거

예를 들어, 객체를 해시 필터로 사용할 때와 같이 객체의 자체 값이 필요한 매우 일반적인 사용 사례입니다. lodash/underscore, jQuery, Backbone 등 많은 라이브러리들이 “values” 함수를 가지고 있습니다.

순회 또는 직렬화를 위해 객체에서 키/값 쌍의 배열(사양에서의 '항목(entries)')을 얻는 것 또한 유용합니다. `Map` 생성자가 순회 가능한 `entries`와 관련된 `entries` 반복자(`WeakMap`도 생성자에서 순회 가능한 `entries`을 허용함)를 수용함에 따라, `entries` 배열을 `new Map`으로 전달하여 일반 객체를 `Map`으로 빠르게 변환하고자 할 때 매우 강력해집니다.

우리는 이미 자신의 키 배열을 반환하는 `Object.keys`와 `Map`/`Set`/`Array`에서 일치하는 `keys`/`values`/`entries` 반복자의 세 쌍을 반환하는 선례를 가지고 있습니다. 이와 같이, es-discuss에 대한 토론과 적어도 하나의 이전 TC39 회의에서 이 제안서는 ECMAScript에 `Object.values` 및 `Object.entries`를 추가하려고 합니다. `Object.keys`와 마찬가지로, 이 두 메서드는 배열을 반환합니다. 이 배열들의 순서는 `Object.keys` 순서와 정확히 일치하여, 세 결과 배열의 모든 인덱스가 객체의 동일한 키, 값 또는 항목을 반영합니다.

## 사양

사양을 [마크다운 형식](https://github.com/tc39/proposal-object-values-entries/blob/main/spec.md)으로 보거나, [HTML 문서](http://tc39.github.io/proposal-object-values-entries/)로 렌더링할 수 있습니다. 참고: `Object.{keys,values,entries}`가 동일한 키 순서를 공유하도록 약간의 사양 리팩토링이 있었습니다.

## 반복자 또는 배열?

`Object.keys`와의 일관성은 이 제안에서 가장 중요합니다. 그러나 반복자에 대한 후속 제안은 `Reflect.ownValues` 및 `Reflect.ownEntries`일 가능성이 높으며, 이는 문자열-값 및 심볼-값 속성의 배열을 모두 제공하는 `Reflect.ownKeys`로 세 가지 요소(키, 값, 항목)를 완성합니다. 그러나 이 제안은 `Object.values`/`Object.entries`에 초점을 맞추고 있으며 `Object` 또는 `Reflect` 형식의 존재가 다른 형식의 존재에 간섭해서는 안 됩니다. 또한 `keys`/`values`/`entries`에서 반복자를 반환하는 현재 선례는 현재 프로토타입의 메서드에만 적용되며 "`Objects`는 특별하다"는 말이 많은 사람들에게 받아들여지는 것 같습니다. 또한 배열 자체는 이미 순회 가능합니다.
30 changes: 30 additions & 0 deletions src/ko/ecmascript_sharedmem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# ecmascript_sharedmem

이는 ECMAScript용 공유 메모리(Shared Memory) 및 아토믹(Atomic) 사양으로, ECMAScript 승인 과정에서 현재 4단계에 있는 제안서입니다.

**중요 참고사항**: 2017년 2월부로 이 제안은 [ECMAScript 사양](https://tc39.github.io/ecma262/)으로 통합되었습니다. 버그 수정 및 발전사항은 해당 문서에서 발생하며, 현재 저장소의 산문은 점점 더 무관해질 것입니다. 버그가 발견되면 먼저 ECMAScript 사양을 확인하고 버그가 해당 버전에도 있다면 이 저장소가 아닌 [ecma262 버그 트래커](https://github.com/tc39/ecma262/issues)에 버그를 기록해주시기 바랍니다.

## 문서 및 기타 자료

- [포맷된 사양](http://tc39.github.io/ecmascript_sharedmem/shmem.html)
- [DOM 지원 사양](http://tc39.github.io/ecmascript_sharedmem/dom_shmem.html)
- [asm.js 동반 사양](http://tc39.github.io/ecmascript_sharedmem/asmjs_shmem.html)
- [간단한 자습서 소개](https://github.com/tc39/proposal-ecmascript-sharedmem/blob/main/TUTORIAL.md)
- [데모 프로그램 및 기타 예제](https://github.com/tc39/proposal-ecmascript-sharedmem/blob/main/DEMOS.md)
- [자주 묻는 질문](https://github.com/tc39/proposal-ecmascript-sharedmem/blob/main/FAQ.md)
- [고수준의 설계 문제, 횡단관심사 문제, 보안 문제 등](https://github.com/tc39/proposal-ecmascript-sharedmem/blob/main/DISCUSSION.md)
- Ecma TC39에 제공되는 프레젠테이션용 슬라이드:
- [2015년 9월](https://github.com/tc39/ecmascript_sharedmem/blob/master/tc39/presentation-sept-2015.odp)
- [2016년 1월](https://github.com/tc39/ecmascript_sharedmem/blob/master/tc39/presentation-jan-2016.odp)

## 구현

Firefox, Chrome 및 WebKit는 제안서의 프로토타입 구현과 함께 제공되며, 이들 대부분이 호환됩니다.

- 이 기능은 Firefox Nightly에서 기본적으로 사용되며, Firefox 46부터는 Developer Edition, Aurora, Beta 및 Release 사용자가 `about:config`를 방문하여 `javascript.options.shared_memory` 옵션을 `true`로 설정할 수 있습니다.
- 이 기능은 Chrome에서 기본적으로 해제되어 있지만 명령줄 옵션 `--js-sys=--sys-shared-arraybuffer` 및 `--enable-blink-feature=SharedArrayBuffer`를 전달하여 활성화할 수 있습니다(Chrome 48에서 작동하는 것으로 알려져 있음)
- 이 기능은 STP 20 기준으로 WebKit Nightly 및 Safari Technology Preview에서 기본적으로 활성화됩니다.

## 기타

사양의 소스는 tc39/ 하위 디렉터리에 있으며 포맷된 버전은 `format.sh` 스크립트로 생성됩니다.
15 changes: 15 additions & 0 deletions src/summary/Object.values-Object.entries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# 목차

1. **[폴리필](#폴리필)**

---

## 폴리필

[폴리필 링크](https://github.com/tc39/proposal-object-values-entries/blob/main/polyfill.js)

아래 네 개의 문법이 선행되어야 합니다.
- `Array.prototype.reduce`
- `Object.prototype.propertyIsEnumerable`
- `Array.prototype.concat`
- `Reflect.ownKeys`
Loading