객체 리터럴 {...} 을 사용하면 객체를 쉽게 만들수 있음
개체를 여러개 만들어야 할 때...
'new'연산자와 생성자 함수를 사용하면 유사한 객체 여러개를 쉽게 만들수 있음.
생성자 함수constructor function 와 일반 함수에 기술적 차이는 없으나
생성자 함수엔 두가지 관례가..
function User(name) {
this.name = name ;
this.isAdmin = false;
}
let user = new User('9ing');
alert(user.name); // 9ing
alert(user.isAdmin); // false
new연산자와 함께 호출하면 내부에서 this가 암시적으로 만들어지고,
마지막엔 this가 반환됨.
생성자 함수엔 보통 return문이 없어..
반환할 것들은 모두 this에 저장되고, 자동으로 반환되기 때문에
명시적으로 써줄필요 없음..
그런데 return문 이 있다면?
=> 객체를 return 하면 this 대신 객체 반환
=> 원시형 return 하면 return문 무시!
function BigUser() {
this.name = 'apple';
return { name : 'cherry' }; // this가 아닌 새로운 객체 반환함
}
alert( new BigUser().name ); // cherry
function SmallUser() {
this.name = 'apple';
return; // this를 반환.
}
alert(new SmallUser().name); // apple