모던자바스크립트(3Day)10장~11장

Gil Hwan·2022년 5월 4일

모던자바스크립트

목록 보기
3/9
post-thumbnail

객체 리터럴

함수 매개변수에 기본값을 설정할 때
함수를 호출할 때 인수를 전달하지 않으면 매개변수에는 undefined가 할당된다.
이때 단축 평가를 사용해 매개변수의 기본값을 설정하면 undefined로 인해 발생할 수 있는 에러를 방지할 수 있다.

객체란?

자바스크립트를 구성하는 거의 모든 것이 객체.
객체는 0개 이상의 프로퍼티로 구성된 집합, 프로퍼티는 키(key)와 값(value)으로 구성된다.

  • 원시타입 (immutable value) : 변경 블기능한 값, 즉 읽기 전용
  • 객체타입 (mutable value) :

프로퍼티 : 객체의 상태를 나타내는 값(data)
메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작

객체 리터럴에 의한 객체 생성

객체를 생성하기 위한 표기법이다.

인스턴스란?
클래스에 의해 생성되어 메모리에 저장된 실체를 말한다.
클래스는 인스턴스를 생성하기 위한 템플릿의 역할을 한다. 인스턴스는 객체가 메모리에 저장되어 실제로 존재하는 것에 초점을 맞춘 용어다.

프로퍼티?

객체는 프로퍼티의 집합이며, 키와 값으로 구성된다.
ver person = { ... }

메서드?

프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드(method)라 부른다.
즉, 메서드는 객체에 묶여 있는 함수를 의미한다.

var func = {
	width : 5 // ⬅️ 프로퍼티
	getWidth : function() { // ⬅️ 메서드
	return 2* this.width; // this는 func를 가리킨다.
}
func.getWidth() // 10

프로퍼티 접근

접근하는 방법은 두 가지

  • 마침표 프로퍼티 접근 연산자(.)를 사용하는 마침표 표기법
  • 대괄호 프로퍼티 접근 연산자([...])를 사용하는 대괄호 표기법
person.name; // 점 표기법

person['name']; // 대괄호 표기법

프로퍼티 값 갱신, 동적 생성, 삭제

  1. 값 갱신 : 이미 존재하는 프로퍼티에 값을 할당하면 프로퍼티 값이 갱신된다.
  2. 동적 생성 : 존재하지 않은 프로퍼티에 값을 할당하면 프로퍼티가 동적으로 생성되어 추가되고 프로퍼티 값이 할당 된다.
  3. 삭제 : delete 연사자는 객체의 프로퍼티를 삭제한다.
    ex) delete obj.key;

원시 값과 객체의 비교

원시타입과 객체타입은 크게 세 가지 측면에서 다르다.

원시 값

  • 원시 타입의 값은 변경 불가능한 값이다.
  • 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장
  • 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달(pass by value)

객체 값

  • 객체(참조) 타입의 값은 변경 가능한 값이다.
  • 객체를 변수에 할당하면 변수(학보된 메모리 공간)에는 참조 값이 저장
  • 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 잔달(pass by reference)

원시 값을 할당한 변수에 새로운 원시 값을 재할당하면 메모리 공간에 저장되어 있는 재할당 이전의 원시 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한 후, 변수는 새롭게 재할당한 원시 값을 가리킨다. 이때 변수가 참조하던 메모리 공간의 주소가 바뀐다.
변수가 참조하던 메모리 공간의 주소가 변경된 이유는 변수에 할당된 원시 값이 변경 불가능한 값이기 때문이다.

profile
기억에 남는 컨텐츠를 만들고 싶습니다.

0개의 댓글