자바스크립트는 객체(object)기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 모든 것이 객체이다. 즉 원시 타입(primitive type)의 값을 제외한 나머지 값(함수, 배열, 정규표현식 등)은 모두 객체이다. 객체는 이러한 다양한 데이터를 한 군데에 묶어 놓은 것이며, 여러개의 데이터가 들어가 있다보니 변수를 선언하는 곳에 바로 담을 수 없어서 키에 각각 담아 준다.
key : value
객체는 0개 이상의 프로퍼티로 구성된 집합이다.
프로퍼티는 키(ley)와 값(value)으로 구성되며, 사이에 콜론 (:)으로 구분합니다.
한 변수안에 여려개의 정보인 객체를 들어가게 하기 위해 중괄호를 사용하며, 키와 값(key-value pair)은 ' , 쉼표로 구분합니다.
const object = { key1 : value1, key2 : value2, ....}
자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 입급객체이므로 값으로 취급할 수 있다. 따라서 함수도 프로퍼티 값으로 사용할 수 있으며, 프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드(method)라고 부른다.
변수이름.keyname 형식으로 작성된다. 키를 이용하여 해당 값에 접근하여 변경 및 삭제가 가능하다.
변수이름[keyname] 형식으로 작성되며, 다음 대괄호 내에 키 값은 꼭 문자열 형식으로만 넣어야합니다. 키를 이용하여 해당 값에 접근하여 변경 및 삭제가 가능하다.
let user = {
firstNam: 'young seo' ,
lastName: 'ji'
};
// Dot notaion '.', Bracket notation [' '] 사용한다면?
user.firstName; // 'young seo'
user['firstName']; // 'young seo'
let user = {
firstNam: 'young seo' ,
lastName: 'ji'
};
user['email'] = 'estell@naver.com';
user.woman = true; // 키에 대한 값은 불리언 값이어도 상관없다.
user.likes = ['운동화','운동']; // 키에 대한 값에는 배열이든 어떤 것이든 상관없다.
console.log(user)
// {firstNam: "young seo", lastName: "ji", email: "estell@naver.com", woman: true, likes: Array(2)}
특정 객체에 동일한 속성이 있다면, 추가할 객체의 속성 중 동일한 속성을 제외한 없는 속성만 추가할 수 있다.
두 개의 객체를 입력받아 두 번째 객체의 속성들을 첫 번째 객체에 추가합니다.
1. obj2에는 있는데 obj1에 없는 key가 있다면 obj2의 key의 value를 obj1의 key의 value에 할당합니다.
// 두 개의 객체를 입력받아 두 번째 객체의 속성들을 첫 번째 객체에 추가해야 합니다.
입출력 예시
const obj1 = { a: 1, b: 2 };
const obj2 = { b: 4, c: 3 };
function extend(obj1, obj2) {
for (let key in obj2) {
if (!(key in obj1)) {
obj1[key] = obj2[key];
}
}
}
extend(obj1, obj2);
console.log(obj1); // -> {a: 1, b: 2, c: 3}
console.log(obj2); // -> {b: 4, c: 3}
function ObjectProperty(obj1, property, obj2) {
// 여기에 코드를 작성합니다.
// 입력 : obj1,2 = 객체, property = 문자열타입의 키
// 첫번째 객체obj1의 키에 두번째 객체obj2를 할당한다.
obj1[property] = obj2;
}
// {}, 'testKey', {name: 'Dude'}을(를) 입력받은 경우, 객체의 'testKey' 속성값이 {name : 'Dude'}
원시타입과 객체타입의 차이를 이해하고 사용한다.