
메서드 작성해보기
const mike = {
name: "Mike",
position: ["chief", "line-cook manager"],
age: 25,
fulltime: true,
secondRole: function(){
console.log(mike.position[1])
}
};
mike.secondRole();
//"line-cook manager"
mike.name로 "Mike" 불러오는 것처럼 메소드 또한 mike.secondRole()로 접근한다.const mike = {
name: "Mike",
position: ["chief", "line-cook manager"],
age: 25,
fulltime: true,
experiences: {
asia : {
korea : "2years",
china : "1year",
thailand : "3years"
},
america : {
mexico : "6months",
canada : "2years"
},
certificates : {
food: [{
name: "Fried Chicken",
licenseNumber: 25
}, {
name: "Rice noodle",
licenseNumber: 423
}, {
name: "Fries with Gravy",
licenseNumber: 574
}]
}
},
secondRole: function(){
console.log(mike.position[1])
}
};
위에서 423 을 출력하려면 어떻게 해야할까?
//certificates의 value까지 접근하기
mike.experiences.certificates
mike.experiences.certificates.food
index number 1번 째에 있으며 배열 안의 객체에서 key 이름licenseNumber의 value이다.mike.experiences.certificates.food[1].licenseNumber
//너무 기니깐 변수에 담아보자
const result = mike.experiences.certificates.food[1].licenseNumber
console.log(result);
// 423
객체를 변수에 저장하면 객체 자체가 저장되는 것이 아니라 reference가 저장된다.
Object, array, function 등 원시형이 아닌 모든 데이터 타입을 참조형 reference이다.
반대로, 텍스트는 변수에 저장하면 텍스트 자체가 저장된다. 그래서 서로 같은 텍스트를 비교연산 하면 서로 값이 같으므로 true 이다.
String, Number, Boolean, Null,undefined의 데이터 타입은 모두 원시형 primitive이다.
원시형 데이터 String비교
const a = '안녕'; const b = '안녕'; console.log(a === b); //true
BUT!! 아래의 객체는 생긴 모양이 아예 똑같은데 false 라고 출력된다.
const hiObj = { name: '안녕' }; const helloObj = { name: '안녕' }; console.log(hiObj === helloObj); //false
자세한 내용은 [데이터의 불변성] 포스트를 추후 작성한다면 그때 다시 다룰 것이다.