코딩앙마 TIL [자바스크립트 기초 강좌 #12 - 객체(object)]

이민선(Jasmine)·2022년 11월 8일
0

superman

name : clark
age : 33

인 사람이 있을 때 그의 객체를 만들어보자.

const superman = {
name : 'clark',
age : 33,
}

여기서
name : 키(key)
clark : 값(value)

각 줄에는, 사용.
마지막 줄에는 굳이 안써도 되지만, 있을 때 각 줄의 이동이 용이함.

객체 - 접근, 추가, 삭제

🎀접근
superman.name // 'clark'
또는
suprman['age'] // 33

🎀추가
superman.gender = 'male';
superman.['haircolor'] = 'black';

🎀삭제
delete superman.hairColor;

단축 프로퍼티

const name = 'clark';
const age = 33;
일 때

const superman = {
name : name,
age : age,
gender : 'male';,
}
인데,
이 코드는

const superman = {
name,
age,
gender : 'male';,
}
이렇게 쓸 수 있다.

프로퍼티 존재 여부 확인

const superman = {
name : 'clark',
age : 33,
}

superman.birthDay;
//undefined

이 때 in 연산자를 사용하면 프로퍼티가 있는지 확인 가능.
언제 in을 쓸까? 어떤 값이 넘어올 지 확신할 수 없을 때 사용.

'birthDay' in superman;
// false

'age' in superman;
// true

for ... in 반복문을 사용하면 객체를 순회하면서 값을 얻을 수 있다.

for(let key in superman){
console.log(key)
console.log(superman[key])
}

const superman = {
name : 'clark',
age : 30,
}

console.log(superman.name)
console.log(superman['age'])
-> "clark" 30

객체 자체를 찍으면 어떻게 될까?

const superman = {
name : 'clark',
age : 30,
}

console.log(superman)
-> Object {
age: 30,
name: "clark"
}

이제 추가를 해보자.

const superman = {
name : 'clark',
age : 30,
}

superman.hairColr = 'black';
superman['hobby'] = 'football';
console.log(superman)
-> Object {
age: 30,
hairColor: "black",
hobby: "football",
name: "clark"
}

이제 뭔가를 지워보자.
const superman = {
name : 'clark',
age : 30,
}

delete superman.age;
console.log(superman)
-> Object {
name: "clark"
}

이번에는 이름과 나이를 받아서 객체를 반환하는 함수로 만들어보자.

function makeObject(name, age){
return {
name : name,
age : age,
hobby : "football"
}
}

const Mike = makeObject('Mike', 30);
console.log(Mike)
-> Object {
age: 30,
hobby: "football",
name: "Mike"
}

물론
name : name,

age : age,
는 각각
name,
age,
로 축약해서 사용 가능.

다음으로는 in을 이용하여 프로퍼티가 존재하는지 확인해보자.

function makeObject(name, age){
return {
name : name,
age : age,
hobby : "football"
}
}

const Mike = makeObject('Mike', 30);

console.log('age' in Mike)
console.log('birthday' in Mike)
-> true false

function isAdult(user){
if(user.age < 20){
return false;
} else {
return true;
}
}

혹은 아래와 같이 else를 생략해도 무방. 어차피 if문으로 들어오지 않으면 아래와 같이 실행될 것이므로.
function isAdult(user){
if(user.age < 20){
return false;
}
return true;
}

const Mike = {
name : 'Mike',
age : 30
}

const Jane = {
name: "Jane"
};

console.log(isAdult(Mike))
-> true

그런데 이때
function isAdult(user){
if(user.age < 20){
return false;
}
return true;
}

const Mike = {
name : 'Mike',
age : 30
}

const Jane = {
name: "Jane"
};

console.log(isAdult(Jane))
-> true 반환. Jane은 나이가 없는데 왜 true? if문을 false로 인식해서 true로 내주는 것.

의도에 맞게 고쳐보자.
function isAdult(user){
if (!('age' in user) || user.age < 20){
return false;
}
return true;
}

const Mike = {
name : 'Mike',
age : 30
}

const Jane = {
name: "Jane"
};

console.log(isAdult(Mike))
-> false

다음으로는 for...in 문 예제를 봐보자.

const Mike = {
name : 'Mike',
age : 30
}

for(x in Mike){
console.log(x)
}
-> "name" "age"

문자열을 이용해서 값을 가져올 수도 있다.

const Mike = {
name : 'Mike',
age : 30
}

for(x in Mike){
console.log(Mike[x])
}
-> "Mike" 30

profile
기록에 진심인 개발자 🌿

0개의 댓글