2012-04-27 5 views
5

파이어 폭스 확장 코드 (여기 : https://github.com/mozilla/prospector/blob/master/oneLiner/bootstrap.js#L34)에서 코드를보고 있었는데, 자바 스크립트에서 본 적이없는 것을 보았습니다. 프로그래머는 연관 배열을 변수 이름으로 사용했습니다. 누군가이 변수 참조가 어떻게 작동하는지 설명 할 수 있습니까?연관 배열을 변수 이름으로 사용 하시겠습니까? - javascript

const {classes: Cc, interfaces: Ci, utils: Cu} = Components; 

나는이 페이지 읽기에서 "CONST"이해 : https://developer.mozilla.org/en/JavaScript/Reference/Statements/const

을하지만 어떻게 변수 이름으로 연관 배열 객체를 사용할 수있다?

또한 연관 배열에서 구성 요소 메소드 (여기에 나열되어 있습니다 : https://developer.mozilla.org/en/Components_object)에 대한 참조로 키 이름을 사용하는 것으로 보입니다. 나는 항상 키 이름을 먼저 가져야하고 그 다음 값을 가져야한다고 생각했지만 이것은 참조 클래스의 값을 Components 클래스 메서드에 먼저 넣은 다음 Cc가 값이있는 지점에 있더라도 참조 이름으로 지정하는 것으로 보입니다. 구성 요소 인터페이스 메소드의 Ci는 Components utils 메소드의 & Cu입니다.

+2

, 일반적인 용어를 읽는 사람을 위해, 많은 재미 것 같은데 "연관 배열"이라 불리는 것은 단지 "객체"(때로는 "지도"또는 "사전") 일뿐입니다. 우리는 "연관 배열 (associative array)"이라고 말하는 것을 피합니다. 왜냐하면 상대적으로 정보가 부족한 사람들이'Array' 유형과 관련 있다고 생각하기 때문에 혼란 스럽기 때문입니다. –

+2

[블록이있는 상수 선언] 가능한 복제본 (0120-555-301) –

답변

6

당신이보고있는 것은 자바 스크립트 1.7 https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7

Destructuring 할당이 가능 그 거울 구문을 사용하여 배열 또는 객체에서 데이터를 추출 할 수 있습니다 자세한 내용은이 문서를 참조하십시오 이후 Destructuring 할당, 그것은 사용할 수 있습니다 배열 및 개체 리터럴. 개체 및 배열 리터럴 식은 임시 데이터 패키지를 쉽게 만들 수있는 방법을 제공합니다. 이러한 패키지를 만든 후에는 원하는 방식으로 사용할 수 있습니다. 함수에서 을 반환 할 수도 있습니다.

+0

Big +1. 그리고 분명히, ECMAScript6는 모질라와 완벽하게 호환되지 않을지라도, 어떤 종류의 파괴적인 할당을 가질 것입니다. –

+0

링크를 제공해 주셔서 감사합니다. 내가 게시하기 전에 Google을 검색했지만 아무 것도 생각 나지 않았습니다. 이 예제는 꽤 잘 설명하는 것 같습니다 : https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7#Looping_across_values_in_an_array_of_objects 여전히 키가 서로 바뀌는 것 같습니다. – Yansky

0

그래,이 체크 아웃 :

var abc = {classes: "ABC", interfaces: "DEF", utils: "XYZ"}; 
const {classes: Cc, interfaces: Ci, utils: Cu} = abc; 
console.debug("test: ", Cc, Ci, Cu); 

특히 무엇 '에 대한 코드 : 자바 스크립트에서

+0

최악의 점은 Firefox 와만 호환된다는 것입니다. 그래서 기본적으로 당신은 독자에게 다른 언어를 배우고 (그리고 별도로) 강제해야합니다. –

+0

글쎄, 나는이 [링크] (http://therelentlessfrontend.com/2010/10/02/how-to-get-the-javascript-version/)을 시도했고 그것은 내 크롬이 1.7도 지원한다고 말했다. 및 firefox - 1.8, 그러나이 진술은 크롬에서 작동하지 않습니다 ... 또한 IE9는 1.3을 지원합니다 : D – Igor

관련 문제