객체란? (object)

YS_Study.log·2022년 1월 15일
0

객체란? (object)

자바스크립트는 객체(object)기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 모든 것이 객체이다. 즉 원시 타입(primitive type)의 값을 제외한 나머지 값(함수, 배열, 정규표현식 등)은 모두 객체이다. 객체는 이러한 다양한 데이터를 한 군데에 묶어 놓은 것이며, 여러개의 데이터가 들어가 있다보니 변수를 선언하는 곳에 바로 담을 수 없어서 키에 각각 담아 준다.

원시타입(primitive)과 객체타입(object)의 차이점

  • -> 원시타입(primitive) 정리
  • 원시 타입은 단 하나의 값만 나타내지만, 객체타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다.
  • 원시타입의 값, 즉 원시값은 변경 불가능 한 값(immutable value)이고, 객체 타입의 값,
    즉 객체는 변경가능한 값(mutable value))이다.
  • 원시타입은 변수에 담을 수 있는 가장 작은 단위의 데이터 타입이며 'number, string, boolean, null, undefined, simbol'
    이 있다. but 객체타입은 큰 단위의 데이터 타입이며 원시 타입을 제외한 모든 나머지 값이 모두 객체다.
  • 변수를 선언하면 변수에 데이터를 담을 공간이 할당되고, 변수를 할당할때 원시타입의 데이터는 작아서 메모리에 그대로 들어오지만, 객체는 뚱뚱하여 바로 들어올 수 없어서 객체를 가리키고 있는 주소(레퍼런스)가 복사되어서 할당된다.

객체의 구성

key : value

객체는 0개 이상의 프로퍼티로 구성된 집합이다.
프로퍼티는 키(ley)와 값(value)으로 구성되며, 사이에 콜론 (:)으로 구분합니다.
한 변수안에 여려개의 정보인 객체를 들어가게 하기 위해 중괄호를 사용하며, 키와 값(key-value pair)은 ' , 쉼표로 구분합니다.

const object = { key1 : value1, key2 : value2, ....}

자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 입급객체이므로 값으로 취급할 수 있다. 따라서 함수도 프로퍼티 값으로 사용할 수 있으며, 프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드(method)라고 부른다.

객체의 키를 이용하여 속성, 값에 접근하는 2가지 방법

Dot notaion ' . '

변수이름.keyname 형식으로 작성된다. 키를 이용하여 해당 값에 접근하여 변경 및 삭제가 가능하다.

Bracket notation ['']

변수이름[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에 할당합니다.

  1. 만약에 obj1과 obj2에 중복으로 있는 key라면 key를 변경하지 않고 유지합니다.
// 두 개의 객체를 입력받아 두 번째 객체의 속성들을 첫 번째 객체에 추가해야 합니다.

입출력 예시

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'}

Check!

원시타입과 객체타입의 차이를 이해하고 사용한다.

profile
느리지만 조금씩 공부하는 중 입니다. 현재 1년 6개월차 신입입니다 ><!

0개의 댓글