키워드 : 생성자 함수, 인스턴스, 함수호출방식, this 바인딩, new 연산자, return
객체를 생성하는 방식(다양) - 객체 리터럴, 생성자 함수
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
생성자 함수에 의해 생성된 객체를 인스턴스라고 한다.
객체 리터럴을 사용하면 동일한 프로퍼티를 갖는 객체를 여러개 생성해야 할 경우 매번 같은 프로퍼티를 기술해야함. 생성자 함수는 한번 선언하고 아래에서 인스턴스를 만들어 사용가능!
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 - 객체
new연산자를 사용하지 않으면 일반 함수로써 호출