[TIL] javascript 객체 생성 방법

ㅎㅐ수·2020년 10월 31일
0

[TIL] JavaScript

목록 보기
7/7

🌝 JS에서 객체를 생성하는 방법에는 여러가지가 있다.

객체 리터럴 방식 이용

  • 중괄호{}를 사용하여 객체를 생성하는 방법
let person = {
name: "hs",
email: "aaaa@example.com",
birth: "0719"
  • person은 name, email, birth 프로퍼티를 갖는 객체
  • 리터럴 방식으로 객체를 정의할 때는 중괄호{ } 안에 프로퍼티 : 값의 쌍을 입력하고 쉼표(,)로 프로퍼티를 구분

Object() 생성자 함수

  • new 키워드를 이용하여 Object 생성자 함수를 호출하면 비어있는 객체를 얻을 수 있다.
let person = new Object();
console.log(person.name); //undefined
console.log(person.email); //undefined
console.log(person.birth); //undefined
person.name = "hs";
person.email = "asdf@example.com";
person.birth = "0719";
console.log(person.name) // 'hs'
console.log(person.email) //"asdf@example.com"
console.log(person.birth) // "0719"
  • new Object()를 호출하면 비어있는 객체를 생성
  • 객체 생성 직후 person 객체에는 name, email, birth 프로퍼티를 갖고 있지 않으므로, new Object()로 비어있는 객체를 생성했으면 프로퍼티를 추가해줘야 한다.

생성자 함수

  • 생성자 함수를 사용하면 java나 c++의 Class처럼 껍데기를 만들 수 있다.
  • 기존 함수에 new 연산자를 붙여서 호출하면, 해당 함수는 생성자 함수로 동작한다.
  • 그러나, 함수가 일반적 함수인지, 객체를 만들기 위한 목적의 생성자 함수인지 구분하기 위해, 생성자 함수의 첫 문자는 대문자로 표기하는 것이 관례이다.
function Person(name, email) {
this.name = name;
this.email = email;
}

let person1 = new Person("hs", "abc@example.com");
let person1 = new Person("dm", "def@example.com");
  • 리터럴과 Obejct()로 객체를 생성하는 것과 달리, 생성자 함수를 통해 객체를 생성하면 같은 속성을 가진 객체를 여러 개 생성할 수 있다.
  • 즉, person1과 person2 객체는 name, email 프로퍼티를 갖게 되며, 이 방식은 클래스를 통해 객체를 생성하는 것과 유사하다.
  • 또한 생성자 함수에서 정의한 this는 생성자 함수로 생성된 인스턴스가 된다.
  • this는 이 비어있는 객체를 가리키고, 그 객체에 name, email 프로퍼티를 추가한 것이다.
  • 생성자 함수에 반환 값이 없으면 비어있는 객체에 새로운 프로퍼티를 추가한 this가 반환된다. (?) 이건 뭔소린지 잘 모루겠다..ㅎ

다음에 프로토타입이랑 인스턴스 공부하고 포스팅하기

0개의 댓글