[JavaScript] 객체(Object)와 객체 정렬 방식

객체는 서로 연관된 변수와 함수를 그룹핑하는 것이다.


객체는  몇 가지 특수한 기능을 가진 연관 배열이다.

객체는 프로퍼티(키-값 쌍)를 저장한다.

프로퍼티의 키는 문자열이나 심볼이어야 한다.

값은 어떤 자료형도 가능하다.


객체의 프로퍼티에 접근하는방법

- 점 표기법 : obj.key

- 대괄호 표기법 : obj[key]

            대괄호 표기법을 사용하면 key값에 공백(띄어쓰기)이 있어도 key값으로 사용이 가능하다.




객체를 작성할때  let 변수명 = { key : 'value'} 를 넣어서 작성하게되며 여러개의 key value를 작성할때 ,(쉼표)로 구분을해준다.

기존에 작성한 객체에 추가적으로 key와 value값을 넣고자할때는 두가지 방법으로 객체를 추가할 수 있다. 

*첫번째 방법: 변수명.원하는key값

*두번째 방법: 변수명[원하는 key값]


첫번째 방식으로 작성할경우 key값을 작성할때 공백을 포함할 수 없다. 

하지만 key값으로 공백을 포함한 key값을 추가하고싶을때 [ ] 괄호를 사용하면 띄어쓰기가 있더라도 오류없이 객체에 새로운 key와 value값을 추가할 수 있다.




프로퍼티를 삭제하고 싶을때: delete obj[key]

객체내에 찾고자하는 프로퍼티가 있는지 확인하고자 할 때: "key" in obj
없다면 undefined를 반환한다.

프로퍼티를 나열하고자 할 때 (객체안의 데이터를 나열하고자 할 때) : for ( let key in obj )



객체 정렬 방식

for..in 으로 일반 객체를 순회하면서 나열할때 객체는 특별한 방식으로 정렬된다.

프로퍼티를 작성한 순서대로 출력될것이라고 생각할 수 잇지만

정수 프로퍼티의 경우 순서가 뒤죽박죽이어도 자동으로 오름차순으로 값을 정렬하여 출력한다.

그 외의 프로퍼티는 객체에 추가한 순서대로 정렬되어 출력된다.

ex) key값이 정수인 경우 오름 차순으로 정렬
let obj1 = {
2: '이번',
4: '삼번',
1: '일번',
3: '삼번',
}

for (let key in obj1) {
console.log(key); // 1,2,3,4
}


하지만 각번호 앞에 "+"를 붙여주면 정수로 취급되지않아 순서대로 출력된다.
let obj2 = {
"+2": '이번',
"+4": '사번',
"+1": '일번',
"+3": '삼번',
}

for (let key in obj2) {
console.log(+key); // 2,4,1,4
}



객체에 소속된 함수를 메소드라고하며

객체에 소속된 변수를 프로퍼티라고 한다. (key값)

함수는 코드들이 많아지면 정리정돈하는 도구

객체는 함수와 변수가 많아지면 연관된것끼리 그룹핑하여 정리정돈하는 도구

댓글