const superman = {
naem : 'clark',
age : 33,
}
name 키(key) : 'clark' 값(value)
객체는 코드블록 {} 안에 키와 값으로 구성된 프로퍼티가 들어간다.
각 프로퍼티는 쉽표로 구분된다.
마지막 쉼표는 없어도 되지만 추후 유지, 보수등을 위해 있는 것이 용이하다.
객체에 접근하고 싶을 때는 . 또는 [] 를 사용하면 된다.
superman.name // 'clark' superman['age'] // 33
🔍 예제를 통해 쉽게 이해하기
const superman = {
name: 'clark',
age: 30,
}
console.log(superman.name); // "clark"
console.log(superman['age']); // 30
추가, 삭제할 때도 . 이나 [] 를 사용한다.
superman.gender = 'male'; superman['hairColor'] = 'black';
🔍 예제를 통해 쉽게 이해하기
점 . 과 대괄호 [] 를 이용해서 객체를 추가해 보자.
const superman = {
name: 'clark',
age: 30,
}
superman.hairColor = 'black';
superman['hobby'] = 'football';
console.log(superman);
/*
// object Object
{
"name" : "clark",
"age" : 30,
"hairColor" : "black",
"hobby" : "football"
}
*/
삭제는 delete 키워드를 사용하면 된다.
delete superman.hairColor;
🔍 예제를 통해 쉽게 이해하기
const superman = {
name: 'clark',
age: 30,
}
delete superman.age;
console.log(superman);
/*
// object Object
{
"name" : "clark"
}
*/
age 값이 삭제된 것을 볼 수 있다.
아래의 예제를 보자.
const name = 'clark'; const age = 33; const superman = { name: name, age : age, gender : 'male',
해당 코드는 아래와 같이 쓸 수 있다.
const name = 'clark';
const age = 33;
const superman = {
name, // name : name
age, // age : age
gender : 'male',
}
만약 존재하지 않는 프로퍼티에 접근하면 어떻게 될까?
에러가 발생하지 않고 undefined
를 출력한다.
const superman = {
name : 'clark',
age : 33,
}
console.log(superman.birthDay); // undefined
이때 in
연산자를 사용하면 프로퍼티가 있는지 확인할 수 있다.
const superman = {
name : 'clark',
age : 33,
}
console.log('birthDay' in superman); // flase
console.log('age' in superman); // true
❓ 그냥 점 . 이나 대괄호 [] 를 쓰면 될 텐데
in
은 언제 쓰일까?함수 인자로 받거나 API 통신을 통해 데이터를 받아올 때 등.. 어떤 값이 올지 확신할 수 없을 때 사용하면 된다.
객체를 순회하면서 값을 얻어올 수 있다.
for 문보다는 간단하다.
for (let key in superman) {
console.log(key)
console.log(superman[key])
}
function makeObject(name, age){
return {
name : name,
age : age,
hobby : "football",
}
}
const Mike = makeObject('mike', 30);
console.log(Mike);
function makeObject(name, age){
return {
name,
age,
hobby : "football",
}
}
const Mike = makeObject('mike', 30);
console.log(Mike);
in
을 이용해서 프로퍼티가 존재하는지를 확인해 보자.function makeObject(name, age){
return {
name,
age,
hobby : "football",
}
}
const Mike = makeObject('mike', 30);
console.log(Mike);
console.log("age" in Mike); // true
console.log("birthDay" in Mike); // false
다만, 해당 예제는 점 . 또는 대괄호 [] 를 이용해서도 확인이 가능하기 때문에 실용적인 예제라고 보기에는 어렵다.
function isAdult(user){
if(user.age < 20){
return false;
}
return true;
}
function isAdult(user){
if(user.age < 20){
return false;
}
return true;
}
const mike = {
name : 'mike',
age : 30,
}
const uoah = {
name : 'uoah',
}
console.log(isAdult(mike)); // true
console.log(isAdult(uoah)); // true
❓ uoah 는 age 값이 없는데 왜
true
가 나왔을까?
user 의 age 가 없기 때문에undefined
라서 if 문에 해당이 되지 않아 if 밖의 코드가 실행되어true
가 반환된다.
function isAdult(user){
if( !('age' in user) || user.age < 20){
// user 에 age 가 없거나 age 값이 20 미만일 때
return false;
}
return true;
}
const mike = {
name : 'mike',
age : 30,
}
const uoah = {
name : 'uoah',
}
console.log(isAdult(mike)); // true
console.log(isAdult(uoah)); // false
age 값이 없을 경우 false
를 반환하도록 바꾸어 주었다.
아래의 x in mike 에서 x (객체의 key
) 이며, x 가 아닌 다른 이름을 넣어 줘도 된다.
const mike = {
name : 'mike',
age : 30,
}
for (key in mike){
console.log(key);
// "name"
// "age"
}
이 문자열을 이용하여 값(value)
을 가지고 올 수 있다.
const mike = {
name : 'mike',
age : 30,
}
for (key in mike){
console.log(mike[key]);
// "maik"
// 30
}