객체 생성은 {...}을 사용하면 쉽게 만들 수 있지만 개발을 하다보면 유사한객체를 여러개 만들어야 할 때가 있다.
new
연산자와 생성자 함수를 사용하면 유사한 객체 여러 개를 쉽게 만들 수 있다.
function User(name) {
this.name = name;
this.isAdmin = false;
}
let user = new User("보라");
alert(user.name); // 보라
alert(user.isAdmin); // false
new 연산자를 사용하여 User(...)
생성자함수를 만들면 아래와 같이 동작한다.
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는 어디서든지 사용할 수 있다.
명시적 this 바인딩이 없는 경우 규칙
명시적 this 바인딩
this 인용 : 코어자바스크립트
인용 : 코어자바스크립트