<JS>객체

윤건호·2022년 3월 28일
0

자바스크립트

목록 보기
13/26
post-thumbnail

객체

const obj = {name = 'gunho' , age : 25}
const obj2 = {}

두 가지의 객체에서 우린 각각의 비교를 해볼 것이다.

console.log({} === {}} // 1
console.log(obj === obj2) // 2

결과를 예측해보자

결과는 둘다 false 이다.

객체는 범위를 가르키는데 우리가 할당해놓은 객체를 사용할때가 아니라면
즉 빈 객체나 새로 만든 객체라면 다 다르다고 생각해야한다.
똑같아보여도 주소값 , 메모리영역이 다 다르기 때문이다.

자바스크립트는 객체 기반의 프로그래밍 언어이다.

자바스크립트를 구성하는 거의 모든 것이 객체라고 할 수 있다.

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

let preson = {
name : 'gun' ,
age : 20 ,
}
위 객체에서 프로퍼티는
name : 'gun' ,
age : 20
name , age 가 프로퍼티 키 'gun' , 20 을 프로퍼티 값이라고 한다

객체는 프로퍼티의 집합이다.

객체의 프로퍼티와 메서드

let counter = {
num : 0, (위에 말했던거처럼 프로퍼티)
increase : function (){
this.num++;
}

메서드를 쉽게 말하면 객체 안에 있는 함수를 메서드라고 할 수 있다.

메서드는 프로퍼티를 참조하고 조작할 수 있는 동작을 말한다.

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

  • 객체 리터럴
  • Object 생성자 함수
  • 생성자 함수
  • Object.create 메서드
  • 클래스(ES6)

이러한 객체 생성 방법중 가장 간단하고 일반적인 방법은

객체 리터럴을 사용하는 방법이다.

프로퍼티

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

let person = {
name : 'gun' ,
age : 25
}
*** 프로퍼티를 나열할때는 쉼표로 구분한다
마지막 프로퍼티에는 사용하지 않아도 되지만 사용해도 상관없다.

let person = {
firstName = 'gunho'
'last-name' = 'yun' // syntaxError

프로퍼티 키를 사용할때는 네이밍 규칙을 지켜야한다.

프로퍼티 접근

프로퍼티에 접근하는 방법은

마침표 프로퍼티 접근 연산자(.)
대괄호 프로퍼티 접근 연산자([...])

위 두가지이다.

let person = {
name : 'gun' ,
} ;

마침표 표기법에 의한 프로퍼티 접근
console.log(person.name); // gun 출력

대괄호 표기법에 의한 프로퍼티 접근
console.log(person['name']); // gun 출력

대괄호 표기법에서의 주의할 점은

반드시 따옴표로 감싼 문자열로 작성해야 한다는 것이다.

따옴표로 감싸지않은 이름을 프로퍼티 키로 사용하면 자바스크립트 엔진에서

식별자로 해석하기 떄문에 에러가 발생한다.

let person = {
name : 'gun'
};
console.log(person[name]); // ReferenceError : name is not defined

참고로 객체에 존재하지 않는 프로퍼티에 접근을 하게되면 undefiend 를 반환한다.

이때 ReferenceError 가 발생하지 않으니 주의해야 한다.

프로퍼티 동적 생성

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

let person = {
name : 'gun'
};
현재 person 에는 age 가 존재하지 않는다.
따라서 person 객체에 age 프로퍼티가 동적으로 생성되고 값이 할당된다.
person.age = 20;
console.log(person); // {name : "gun" , age : 20}

profile
더 배우고 싶은 프론트엔드 개발자 윤건호입니다.

0개의 댓글