1. 객체(Object)란?
- JavaScript는 객체기반의 스크립트 언어이며 JavaScript를 이루고 있는 거의 모든 것은 객체이다. 객체란 여러 속성을 하나의 변수에 저장할 수 있도록 해주는 데이터 타입이다.
- 객체는 중괄호 {…}를 이용해 만들 수 있다. 중괄호 안에는 ‘키(key): 값(value)’ 쌍으로 구성된 프로퍼티(property) 를 여러 개 넣을 수 있는데, 키에는 문자형, 값에는 모든 자료형이 허용된다.
- 서랍장을 생각하면 객체를 이해하기 쉽다. 서랍장 안 파일은 프로퍼티, 파일 각각에 붙어있는 이름표는 객체의 키라고 생각하면 된다. 복잡한 서랍장 안에서 이름표를 보고 원하는 파일을 쉽게 찾을 수 있듯이, 객체에서는 키를 이용해 프로퍼티를 쉽게 찾을 수 있다. 추가나 삭제도 마찬가지이다.
2. 객체 구문
var user = new Object(); // "object constructor" syntax (객체 생성자 방식)
var user = {}; // "object literal" syntax (객체 리터럴 방식)
ex)
- 이름 : Surim Son
- 나이 : 22
Key : '이름', '나이'
Value : 'Surim son', 22
3. 계산된 프로퍼티(Computed Property)
: 객체를 만들 때 객체 리터럴 안의 프로퍼티 키가 대괄호로 둘러싸여 있는 경우, 이를 계산된 프로퍼티(computed property)라고 부른다.
ex)
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {
[fruit]: 5, // 변수 fruit에서 프로퍼티 이름을 동적으로 받아 옴
};
alert( bag.apple ); // fruit에 "apple"이 할당되었다면, 5가 출력됨
위 예시에서 [fruit]는 프로퍼티 이름을 변수 fruit에서 가져오겠다는 것을 의미한다.
사용자가 프롬프트 대화상자에 apple을 입력했다면 bag엔 {apple: 5}가 할당될 것이다.
4. 단축된 프로퍼티(Property Value Shorthand)
실무에선 프로퍼티 값을 기존 변수에서 받아와 사용하는 경우가 종종 있다.
ex)
function makeUser(name, age) {
return {
name: name,
age: age,
// ...등등
};
}
let user = makeUser("John", 30);
alert(user.name); // John
위 예시의 프로퍼티들은 이름과 값이 변수의 이름과 동일한 것을 볼 수 있다. 이렇게 변수를 사용해 프로퍼티를 만드는 경우는 아주 흔한데, 프로퍼티 값 단축 구문(property value shorthand)을 사용하면 코드를 간결하게 할 수 있다.
name : name 대신 name만 적어도 프로퍼티 설정 가능하다.
function makeUser(name, age) {
return {
name, // name: name 과 같음
age, // age: age 와 같음
// ...
};
}
5. in 연산자로 프로퍼티 존재 여부 확인하기
: 자바스크립트 객체의 중요한 특징 중 하나는 다른 언어와는 달리, 존재하지 않는 프로퍼티에 접근하려 해도 에러가 발생하지 않고 undefined를 반환한다는 것이다. 이런 특징을 응용하면 프로퍼티 존재 여부를 쉽게 확인할 수 있다.
기본 문법
"key" in object
ex)
let user = { name: "John", age: 30 };
alert( "age" in user ); // user.age가 존재하므로 true가 출력됨
alert( "blabla" in user ); // user.blabla는 존재하지 않기 때문에 false가 출력됨
for ~ in 반복문
: for ~ in 반복문을 사용하면 객체의 모든 키를 순회할 수 있다.
ex)
for (key in object) {
// 각 프로퍼티 키(key)를 이용하여 본문(body)을 실행한다.
}
아래 예시를 실행하면 객체 user의 모든 프로퍼티가 출력된다.
let user = {
name: "John",
age: 30,
isAdmin: true
};
for (let key in user) {
// 키
alert( key ); // name, age, isAdmin
// 키에 해당하는 값
alert( user[key] ); // John, 30, true
}
'Javascript' 카테고리의 다른 글
자바스크립트 기초(상속) (0) | 2022.02.17 |
---|---|
자바스크립트 기초(클래스) (0) | 2022.02.16 |
자바스크립트_로또 당첨 알고리즘 만들기 (0) | 2022.02.15 |
자바스크립트 기초(배열) (0) | 2022.02.11 |
자바스크립트 기초(함수) (0) | 2022.02.11 |