함수를 new 라는 전치 연산자와 함께 호출하면,
호출한 함수의 prototype 속성의 값에 연결되는 프로토타입 체인을 가진 객체가 생성되고,
이 새로운 객체는 함수에서 사용한 this 에 바인딩된다.
객체 생성과 this 바인딩 :
// 1. 일반적 함수 호출 시 this 는 전역객체를 참조 function fn(){ this.fnVal = "hello"; } fn(); window.fnVal // hello // 2. new 연산자로 호출 시 this 는 전역객체를 참조하지 않는다. function Obj(){ this.objVal = "hi"; } new Obj(); window.objVal // undefined // new 연산자로 호출시 새 객체가 생성되고 this 는 이 객체를 참조 var obj = new Obj(); obj.objVal // "hi"
함수의 prototype 속성값이 프로토타입 체인으로 연결된 객체 생성 :
function Obj(){} Obj.prototype = { attr : "myAttr" } var obj = new Obj(); obj.attr // "myAttr";