JavaScript 배열 중괄호 대 대괄호


111

다음 각 배열 정의의 차이점은 무엇입니까?

var myArray = [];
var myArray = {};
var myArray = new Array();

답변:


137

첫 번째와 세 번째는 동일하며 새 배열을 만듭니다. 두 번째는 배열이 아닌 새로운 빈 객체를 만듭니다.

var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array

객체의 값에 어떻게 액세스합니까?
Pinkie

3
대괄호 또는 점 표기법 사용 : myObject["someValue"]또는 myObject.someValue. {}will에 의해 생성 된 빈 개체 는 물론 이러한 속성을 갖지 않지만 동일한 방식으로 할당 할 수 있습니다.myObject.someValue = "hello!"
johusman

4
이 특별한 경우 1과 3은 동일한 효과를 갖습니다. 그러나 때로는 다르게 작동합니다. 예를 들어, var a = new Array(5)그리고 var b = [5], 다음 ab(이후 a.length= 5 상태 b.length= 1 a[0]undefined상태 b[0]에서 5 정도로하고,.)
호남 Rostomyan

이다 var a;var a = {};같은?
RNA

31

var myObject = {}; var와 동일 myObject = new Object();

따라서 두 번째 예는 Array일반 Object.

이것은 Array클래스와 마찬가지로 혼란 스러울 수 있으며 클래스입니다 . Object보다 정확하게 Array는의 하위 클래스입니다 Object. 따라서 대체로 Object의미론은 다음에 적용 할 수 있습니다 Array.

var o = [];
o.push('element1');
o.push('element2');
o['property1'] = 'property value';  // define a custom property.
console.log(o.property1);
console.log(o.length);  // Outputs '2' as we've only push()'ed two elements onto the Array

2
property1은 어디에 저장됩니다. 배열에 있지 않습니까
Pinkie

9
@Pinkie : 이것은 지금 혼란스러워지고 있습니다 : 배열도 객체 입니다. 을 수행 o['property1'] = 'property value'하면 실제로 요소를 배열에 추가하는 것이 아니라 배열 객체 의 속성을 설정 합니다 . 혼란스러워? 내가 말했지;) JavaScript에서는 기본적으로 모든 것이 객체입니다. 다른 목적은, 같은 Array, RegExp... 더 기능이 기본 객체를 확장 할 수 있습니다. 일반 빈 개체가 중괄호로 만들어집니다 plain_obj = {}.
Felix Kling
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.