JS : 자료형 - 객체 타입 (object type)
- object는 다수의 원시 자료형을 포함하거나 복잡한 개체 (entity)를 표현할 수 있는 자료형이다.
- object() 혹은 중괄호 {}를 통해 생성한다.
- object의 객체는 key:value형태로 표현하며, 접근은 object.key 형태로 불러온다.
let user = {
name : "레슈",
age : 22
};
- user에 해당 내용을 할당한다면, user라는 변수에 메모리가 할당되고 그 메모리 안에 name, age 가 들어간다. 하나의 메모리 안에는 하나의 데이터만 들어갈 수 있기 때문에 name과 age에는 key로써 메모리 안으로 들어가고 해당 정보를 불러오기 위해선 object.key형태로 불러와야 한다.
let user = {
name : "레슈",
age : 22
};
console.log(user.name); //레슈
console.log(user.age); //22
console.log(typeof user); //'object'
console.log(typeof user.name); //'string'
console.log(typeof user.age); //'number'
console.log(user); //{ name: '레슈', age: 22 }
user.age = 5555555555; //let으로 변수를 주었기에 재할당 가능
console.log(user.age); //5555555555
console.log(user); //{ name: '레슈', age: 5555555555 }
객체 추가 및 삭제
- 객체(object)에 개체 추가는 obg.key = value, 삭제는 delete 명령어를 통해 삭제한다.
let user = {
name : "레슈",
age : 22
};
console.log(user); //{ name: '레슈', age: 22 }
//추가
user.weight = 22;
console.log(user); //{ name: '레슈', age: 22, weight: 22 }
//삭제
delete user.age;
console.log(user); //{ name: '레슈', weight: 22 }
객체 복사
let user = {
name : "레슈",
age : 22
};
// 객체복사 : user를 user2로 복사
let user2 = user;
console.log(user2); // { name: '레슈', age: 22 }
// user2 이름 수정
user2.name = "오소리감투";
console.log(user2.name) // '오소리감투'
console.log(user2); // { name: '오소리감투', age: 22 }
//user 정보확인
console.log(user.name); // '오소리감투'
console.log(user); // { name: '오소리감투', age: 22 }
//user 나이변경
user.age = 27;
console.log(user.age); // 27
console.log(user2.age); //27
- user 혹은 user2의 정보만 수정했는데 둘 다 수정 및 반영이 되었다. 그 이유는 object의 값을 복사할때는 대상 전체가 아닌 object 내 주소 값만 복사되는 문제가 발생되기때문에 가리키는 대상의 값을 복사하려면 얕은 복사 (shallow copy)또는 깊은복사(deep copy)를 통해서 복사를 하면 문제없이 복사할 수 있다.
정리
: let user2 변수 공간을 만들고 user를 복사했을 때 객체에 대한 데이터인 name과 age 모두가 복사되는 게 아니라 user가 갖고 있는 주소 값이 복사되어 user2라는 메모리 공간을 만들고 user를 복사하니 메모리 공간에 주소 값이 들어가게 되어 같은 공간을 갖게 되는 것이다.
2022.04.14 - [TIL/JavaScript] - JS : 자료형 - 원시 타입(primitive type)
JS : 자료형 - 원시 타입(primitive type)
JS : 자료형 문자형 (string) 문자형(string)은 문자, 문자열을 표현하는 자료형이며, 3가지 방식으로 작성할 수 있다. 큰 따옴표 : "Mike"; 작은따옴표 : 'Mike'; 역 따옴표 또는 백틱(backthick) : `Mike`; 백..
sol-reshur.tistory.com
'STUDY > JavaScript' 카테고리의 다른 글
JS : 형 변환(Type Casting) (0) | 2022.05.12 |
---|---|
JS : 대화상자를 나타내는 메서드 : alert, prompt, confirm (0) | 2022.05.03 |
JS : typeof 연산자 (0) | 2022.04.14 |
JS : 자료형 - 원시 타입(primitive type) (0) | 2022.04.14 |
JS : 변수, 상수 let, const (0) | 2022.04.14 |