[js]-DeepDive 생성자 함수에 의한 객체 생성

Kng_db·2023년 2월 2일
0

키워드 : 생성자 함수, 인스턴스, 함수호출방식, this 바인딩, new 연산자, return

생성자 함수

객체를 생성하는 방식(다양) - 객체 리터럴, 생성자 함수

Object 생성자 함수

  • new 연산자와 함께 Object 생성자 함수를 호출 -> 빈 객체를 생성하고 반환
const person = new Object();

person.name = 'Lee';
person.sayHello = function () {
	console.log('Hi! My name is ' + this.name')
}

console.log(person);  // {name: "Lee", sayHello: f}
person.sayHello();  // Hi! My name is Lee

생성자 함수에 의해 생성된 객체를 인스턴스라고 한다.

  • 생성자 함수의 종류
    JS는 Object, String, Number, Boolean, Function, Array, Date, RegExp, Promise 등의 빌트인 생성자 함수를 제공

생성자 함수를 쓰는 이유

객체 리터럴을 사용하면 동일한 프로퍼티를 갖는 객체를 여러개 생성해야 할 경우 매번 같은 프로퍼티를 기술해야함. 생성자 함수는 한번 선언하고 아래에서 인스턴스를 만들어 사용가능!

생성자 함수의 인스턴스 생성 과정

function User(name) {
  // this = {};  (빈 객체가 암시적으로 만들어짐)

  // 새로운 프로퍼티를 this에 추가함
  this.name = name;
  this.isAdmin = false;

  // return this;  (this가 암시적으로 반환됨)
}
let user = new User("인스턴스")

let user = {
name: "인스턴스",
isAdmin: false
};
같은 결과

함수호출방식

일반함수, 메서드, 생성자 함수
this가 가르키는 값 -> 전역 객체, 메스드를 호출한 객체, 생성자 함수가 생성할 인스턴스

this 바인딩

바인딩이란? 식별자 - 값, 변수 이름 - 메모리, this - 객체

생성자 함수 - return

new 연산자

new연산자를 사용하지 않으면 일반 함수로써 호출

profile
코딩 즐기는 사람

0개의 댓글