5일차 과제
Part 05. 객체 기본문법
1. 객체
2. 참조에 의한 객체 복사
3. 매서드와 this
4. new 연산자와 생성자 함수
객체
과제 1 : 객체야 안녕?
다음 각 동작을 한 줄씩, 코드로 작성해보세요.
- 빈 객체 user를 만듭니다.
- user에 키가 name, 값이 John인 프로퍼티를 추가하세요.
- user에 키가 surname, 값이 Smith인 프로퍼티를 추가하세요.
- name의 값을 Pete로 수정해보세요.
- user에서 프로퍼티 name을 삭제하세요.
답안
let user = {
name : "John",
surname : "Smith"
};
user.surname = "Pete";
delete user.name;
해답
let user = {};
user.name = "John";
user.surname = "Smith";
user.name = "Pete";
delete user.name;
과제 2 : 객체가 비어있는지 확인하기
객체에 프로퍼티가 하나도 없는 경우 true, 그렇지 않은 경우 false를 반환해주는 함수 isEmpty(obj)를 만들어 보세요.
아래와 같이 동작해야 합니다.
let schedule = {};
alert( isEmpty(schedule) ); // true
schedule["8:30"] = "get up";
alert( isEmpty(schedule) ); // false
해답
객체 프로퍼티를 대상으로 반복문을 실행하다가 프로퍼티가 하나라도 있으면 그 즉시 false를 반환하게 코드를 작성하면 됩니다.
function isEmpty(obj) {
for (let key in obj) {
// if the loop has started, there is a property
return false;
}
return true;
}
과제 3 : 변하지 않는 객체?
const와 함께 선언한 객체를 변경하는 게 가능할까요? 생각을 공유해주세요!
const user = {
name: "John"
};
// 아래 코드는 에러 없이 실행될까요?
user.name = "Pete";
답안
에러 없이 실행 가능
user 가 변경되는 것을 막는 것이지, user 의 내용인 name이 변경되는 것을 막지 않는다.
과제 4 : 프로터티 합계 구하기
모든 팀원의 월급에 대한 정보를 담고 있는 객체가 있다고 해봅시다.
let salaries = {
John: 100,
Ann: 160,
Pete: 130
}
모든 팀원의 월급을 합한 값을 구하고, 그 값을 변수 sum에 저장해주는 코드를 작성해보세요. sum엔 390이 저장되어야겠죠?
주의: salaries가 비어있다면 sum에 0이 저장되어야 합니다.
답안
let sum = 0;
for (let key in salaries) {
sum += salaries[key]; // salaries[key]는 salaries의 key에 해당하는 값
}
alert(sum);
과제 5 : 프로퍼티 값 두 배로 부풀리기
객체 obj의 프로퍼티 값이 숫자인 경우 그 값을 두 배 해주는 함수 multiplyNumeric(obj)을 만들어보세요.
// 함수 호출 전
let menu = {
width: 200,
height: 300,
title: "My menu"
};
multiplyNumeric(menu);
// 함수 호출 후
menu = {
width: 400,
height: 600,
title: "My menu"
};
multiplyNumeric은 아무것도 반환하지 않아도 괜찮습니다. 객체 자체를 수정해주기만 하면 됩니다.
힌트) typeof를 사용하면 프로퍼티 값이 숫자인지 확인할 수 있습니다.
배운 것
typeof "ABC" 문자열은 "string"을 리턴합니다.
typeof 1
typeof 1.2 숫자는 "number"를 리턴합니다.
typeof { name : "Anne"} 객체는 "object"를 리턴합니다.
typeof null null은 "object"를 리턴합니다.
typeof [1, 2, 3] 배열은 "object"를 리턴합니다.
해답
function multiplyNumeric(obj) {
for (let key in obj) {
if (typeof obj[key] == 'number') {
obj[key] *= 2;
}
}
}
'TIL' 카테고리의 다른 글
2023.03.15 (1) | 2023.03.15 |
---|---|
2023.03.13 (0) | 2023.03.13 |
2023.03.09_4일차 정리 (0) | 2023.03.10 |
2023.03.09_4일차 과제 (0) | 2023.03.09 |
2023.03.08_3일차 과제 (0) | 2023.03.08 |