1. 생성
// 객체(object)의 선언
// 중괄호 내에 key: value 로 이루어진 속성(attribute)값들을 나열하여 선언
let sampleObject = {
key1: value1,
key2: value2,
...
}
- JavaScript의 객체는 속성(Attribute)값들의 집합
- 속성값은 key: value 쌍으로 구성
- 속성의 이름에 해당하는 key 값에는 symbol, string 타입의 값을 사용 가능
- 속성의 값에 해당하는 value에는 모든 타입의 값을 사용 가능
2. 참조
// name, std_id, class 속성을 가진 객체 student
let student = {
name: 'David',
std_id: 12345678,
class: 'A'
}
// <객체>.<key> 혹은 <객체>["<key>"] 로 속성값 참조 가능
console.log(student.name);
console.log(student["name"]);
- . 연산자 혹은 대괄호([ ]) 를 사용하여 객체의 속성값을 참조 가능
- 존재하지 않는 속성값을 참조할 경우 undefined 반환
- 단, 숫자를 키값으로 사용할 경우 .연산자를 사용한 참조는 불가능
3. 속성 추가/수정
let obj = {
id: 123,
name: "Jack"
}
// . 연산자로 속성 추가
obj.height = 170;
console.log(obj.height);
// 대괄호 표현으로 속성 추가
obj["weight"] = 60;
console.log(obj.weight);
- .연산자나 대괄호 표현으로 추가할 속성의 key를 명시한 뒤 값을 대입해주면 속성 추가 가능
- 이미 존재하는 속성에 값을 대입할 경우 값을 수정할 수 있음
4. 속성 삭제
let obj = {
id: 1234,
name: "Tom",
height: 150,
weight: 45
}
// delete 연산자를 사용하여 속성 삭제
delete obj.height;
delete obj["weight"];
// 속성이 삭제되었기 때문에 undefined 반환
console.log(obj.height);
console.log(obj.weight);
- delete 연산을 사용하여 속성을 삭제할 수 있음
- 제거할 속성값을 참조한뒤 그 앞에 delete 키워드를 붙여주기만 하면 간단하게 삭제 가능
- 배열또한 객체이기에 이 방법으로 element를 삭제할 수 있지만 배열에서 사용하는 것은 권장하지 않음
5. 빠른 생성
id = 123;
name = "David";
height = 157;
// 직접 key: value를 명시하여 생성
let obj1 = {
"id": id,
"name": name,
"height": height
}
// 값을 저장한 변수의 이름을 그대로 key로 사용하여 빠른 생성
let obj2 = { id, name, height }
// 두 객체를 문자열화하여 출력시
// 둘 다 "{'id':123,'name':'David','height':157}" 로 같은 결과를 보임
console.log(JSON.stringify(obj1));
console.log(JSON.stringify(obj2));
- 객체 선언시 value로 사용할 값을 저장한 변수를 그대로 넣어줄 경우 자동으로 변수명을 key로 사용
6. 메소드
// 일반적인 속성처럼 메소드를 정의
let obj = {
name: "Jerry",
introduce: function() {
return `My name is ${ this.name }.`;
}
}
console.log(obj.introduce());
// 빠른 메소드 정의
let obj2 = {
name: "Susie",
introduce() {
return `My name is ${ this.name }.`;
}
}
console.log(obj2.introduce());
- JavaScript의 객체는 함수를 값으로 가지는 속성인 메소드(method)를 가질 수 있음
- 메소드는 다른 속성처럼 key: value 형태로 정의할 수 있음
- key: value 형태대신 function키워드를 생략하고 함수를 정의하듯 정의할 수도 있음
7. 객체와 const
// 객체를 변경할 수 없도록 하기 위해 const키워드로 선언
const obj = {
id: 123,
name: "Jane"
}
// 속성값 변경 시도
obj.name = "Lina";
// 속성값이 변경되지 않았는지 확인하기 위해 출력
// 변경이 정상적으로 이루어졌음을 확인 가능
// 객체를 가리키는 변수를 const로 선언해도 const를 참조하여
// 속성값을 변경하는 것은 막을 수 없음
console.log(obj.name);
// 객체의 변경을 제대로 방지하기 위해 Object.freeze 메소드 호출
Object.freeze(obj);
// 속성값 변경 시도
obj.name = "Jane";
// 속성값이 변경되지 않았는지 확인하기 위해 출력
// 이번에는 변경사항이 적용되지 않았음을 확인할 수 있음
console.log(obj.name);
- const 키워드는 해당 이름이 가리키는 값을 재정의할 수 없도록 하기위한 키워드
- const로 객체를 선언해도 그 변수에 다른 값을 대입할 수 없을 뿐 객체를 수정하는 것은 가능함
- 객체를 수정 불가능하도록 만들려면 Object.freeze(<객체>) 메소드를 호출해줘야함
'언어 > JavaScript' 카테고리의 다른 글
#8 import / export (0) | 2022.02.21 |
---|---|
#7 클래스(Class) (0) | 2022.02.21 |
#5 기본 구문 (0) | 2022.02.17 |
#4 함수(Function) (0) | 2022.02.17 |
#3 배열(Array) (0) | 2022.02.15 |