10장.객체

도롱뇽·2023년 1월 25일
0
post-thumbnail

객체란

자바스크립트는 객체기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체이다
원시 값을 제외한 나머지 값(함수,배열,정규 표현식 등)은 모두 객체이다

원시타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조이다
또한 원시 값은 변경 불가능하지만 객체 타입은 변경이 가능하다

프로퍼티

객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성된다

프로퍼티 키값은 문자열 또는 심벌값이 들어가야한다 식별자 네이밍 규칙을 따르지 않는 이름에는 반드시 따옴표를 사용해야한다, 프로퍼티 키에 문자열이나 심벌 값 외의 값을 사용하면 암묵적 타입 변환으로 문자열이 된다.

매서드

프로퍼티 값이 함수일 경우 일반 함수와 구별하기 위해 메서드라고 부른다

const obj ={
	sayHi:function(){
    	console.log('Hi')
    },
  
  	sayBye(){
    	console.log('bye')
    }
  
}

매서드를 정의할 때 function키워드를 생략한 축약 표현을 사용할 수 있다.
매서드 축약표현으로 정의한 메서드는 프로퍼티에 할당한 함수와 다르게 동작한다.

프로퍼티 접근

  • . 접근 연산자를 사용하는 마침표 표기법
  • [] 접근 연산자를 사용하는 대관호 표기법

이 두가지로 프로퍼티에 접근이 가능하다

객체에는 존재하지 않는 프로퍼티에 접근시 undefined를 반환하고,reference에러를 발생하진 않는다

프로퍼티 값 갱신

const person = {
  name:'Lee'
}

person.name = 'Kim;

conosle.log(person) // {name:'Kim'}

프로퍼티 값 동적 생성

존재하지 않는 프로퍼티에 값을 할당하면 프로퍼티가 동적으로 생성되어 추가되고 프로퍼티 값이 할당된다.

const person = {
	name:'Lee'
}

person.age = 20

console.log(person) // {name:'Lee',age:20}

프로퍼티 삭제

delete 연산자는 객체의 프로퍼티를 삭제한다. 이때 delete 연산자의 피연산자는 프로퍼티 값에 접근할 수 있는 표현식이여야 한다. 만약 존재하지 않는 프로퍼티를 삭제하면 아무런 에러없이 무시된다.

const person = {
	name:'Lee'
}

person.age = 20

delete person.age

console.log(person) // {name:'Lee'}

객체 리터럴 확장 기능

프로퍼티 축약 표현

const x = 1
const y = 2

const obj = {
  x:x,
  y:y
}

const abbreviationObj ={x, y}

프로퍼티 값으로 변수를 사용하는 경우 변수 이름과 프로퍼티 키가 동일한 이름일 때 프로퍼티 키를 생략할 수 있다
이떄 프로퍼티 키는 변수 이름으로 자동생성된다.

profile
재생재생열매

0개의 댓글