프로그래밍에서 "객체"는 아주 많이 나오는 개념입니다. 오늘은 JavaScript에서 객체를 어떻게 구현했는지 알아보죠!
객체(Object)
- 객체는 {} 중괄호 안에 "키 : 값"의 쌍으로 구현되는 자바스크립의 "자료형" 입니다.
중괄호로 선언하는 방법 외에도, new Object()라는 방법도 있지만, 대부분 객체 리터럴(중괄호)를 이용합니다. 중괄호를 이용해 선언한 객체를 "객체 리터럴"이라고 합니다.
const mapin = new Object(); //'객체 생성자'
const mapin2 = {}; // '객체 리터럴 '
- "키 : 값"의 쌍은 Property라고 하고, 한 객체에는 여러 개의 Property가 있을 수 있습니다.
- 키엔 문자형, 값엔 모든 자료형(배열,문자열,함수 등등)이 허용됩니다.
위의 객체 구조를 좀 더 발전시켜, 코드로 작성한다면 아래와 같이 됩니다.
const mapin = {
name:["Mapin","King"],
age:24,
major:"computer Science",
gender:"male",
interest:['hiphop','programming'],
bio:function(){
alert(this.name[0] + ' '+this.name[1] + "is'+this.age+"years old. He likes+this.interests[0]');
}
}
객체(Object)의 호출/접근
- 객체에 담긴 값을 사용하고 싶다면, 객체의 "Key"에 접근을 하면 된다.
- "Key"에 접근하는 방법은 2가지가 있습니다. ".(점)"을 이용하는 dot notation, "[](괄호)"를 이용하는 Bracket notation이 있습니다.
- 둘은 차이점이 분명 존재하지만, 대부분의 상황에서는 무엇을 써도 상관없긴 합니다 .
//dot notation
console.log(mapin.name)
console.log(mapin.bio())
//bracket notation
console.log(mapin["name"]);
console.log(mapin["bio"]());
* Dot notation vs Bracket notation
- 대부분의 상황에서는 둘을 같이 쓸 수 있습니다만, 둘의 미묘한 차이가 있습니다.
- 우선, Dot notation은 변수로 불러올 수가 없습니다(return undefined). Bracket notation은 변수를 이용해서 부를 수 있습니다.
const mapin ={
age:24,
name:"mapin",
gender:"male",
}
let mapinGender = "gender"
//This code undefined!
console.log(mapin.mapinGender);
//This code Correct
cosole.log(mapin[mapinGender]); //male
- 정리하자면 , Dot notation은 뒤에 있는 걸 무적권 키로 인식합니다. 위와 같이 mapin.mapinGender은 mapin객체에 "mapinGender"라는 Key가 있는지 확인을 하는겁니다. 반면에, Bracket notation은 mapinGender안에 있는 값(변수의 value)을 key로 이용하여 찾게 됩니다.
Computed Property
- 객체 내부의 key값은 "문자열"이라고 했지만, 대괄호에 싸여져 있는 경우가 있습니다.
- 이 경우는, key 값을 "변수"로 내가 받겠다는 의미로 , 입력되는 변수를 key로 Property를 만드는 방법 중 하나입니다.
let order = prompt("무엇을 사실 건가요?","Tshirt");
let mapin = {
[order]:1,
};
- key값을 변수로 사용해서 , 할당하는 다른방법도 있죠! "객체.key = 값" 과 같이 , 할당 연산자를 이용하면 됩니다.
let order = prompt("무엇을 사실껀가요?","Tshirt");
let mapin ={
}
mapin[order] = 1
둘 중에 자신이 잘 할 수 있는 방법으로 쓰면 됩니다. 가독성도 물론 중요하지만 , 우선적으로 동작이 잘되는게 중요하기 때문에 자신에게 맞는 방법을 선택하고 , 둘 다 이해는 할 수 있도록 하는 것이 좋습니다 :)
단축 프로퍼티(Property shorthand)
- 코딩을 하다보면 Property 값을 변수에서 받아와 사용하는 경우는 아주아주 빈번하게 발생합니다. 아래와 같이 말이죠!
function Login(Id,Pw){
return{
Id:Id,
Pw:Pw,
...//기타정보들
}
}
let LoginState = Login("hello",1234);
- 이름(key)과 값(value)이 변수의 이름(Parameter,variable)과 동일한 경우, 프로그래머들은 아래와 같이 축약을 할 수 있도록 만들어 놨습니다!(ES6)
function Login(Id,Pw){
return{
Id, // Id:Id 와 같음
Pw, //Pw:Pw와 같음
}
}
let LoginState = Login("hello",1234);
객체의 순회,탐색
- 객체를 다룰 때는 , for ~in 문이나, 연산자 "In"을 많이 쓰게됩니다.
- 하지만, 일반적인 for문을 사용할 수도 있고, 이것도 자신이 잘할 수 있는 방법으로 일단 구현하면 됩니다.
function makeUser(userId,userPw,name){
return {
userId,
userPw,
name,
}
}
const user1 = makeUser("mapin",1234,머핀);
// 객체의 순회
for (let key in user1){
if("age" in user1){
console.log("나이정보 있음");
}
console.log(user1[key])
}
'Web Front-end > JavaScript' 카테고리의 다른 글
[JS/Basic/자료형] 자바스크립트 원시타입,참조타입 (0) | 2022.07.29 |
---|---|
[JS/Basic/연습문제] 자바스크립트 객체 연습문제 (0) | 2022.07.29 |
[JS/가독성/주석] 자바스크립트 주석 잘 달아보자! (0) | 2022.07.27 |
[JS/Basic/TDD,BDD] 자바스크립트 테스팅 연습 (0) | 2022.07.27 |
[JS/Basic/함수] 자바스크립트 함수 (0) | 2022.07.26 |