생성자 함수를 즉시실행함수로 감싸는 이유가 궁금합니다.
예제25-01을 보면
생성자를 즉시실행함수로 감싸는 패턴이 있던데요.
var Person = (function(){
function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function(){
console.log('Hi! My name is ' + this.name);
};
return Person;
})();
var me = new Person('Lee');
me.sayHi();
굳이 이렇게 하는 이유는 무엇인가요?
아래와 같이 그냥 일반 함수 선언문으로 해도 될것 같은데요.
function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function(){
console.log('Hi! My name is ' + this.name);
}
var me = new Person('Lee');
me.sayHi();
혹시 함수 호이스팅? 때문에 그런거면 변수에 생성자를 할당해면 될것 같은데요...
즉시실행함수를 쓰는 이유를 도무지 모르겠네요;
var Person = function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function(){
console.log('Hi! My name is ' + this.name);
}
var me = new Person('Lee');
me.sayHi();
Câu trả lời 1
1
안그래도 되는게 맞습니다.
다만 생성자와 관련한 함수를 스코프로 가둠으로써 보다 명확히 구분하려는 차원에서 그렇게 작성하신게 아닐까 합니다.
나아가 당장은 스코프가 무의미하지만, 나중에 생성자함수 초기화 과정에서 한 번만 쓰일 변수가 필요해진다면 그 의의가 보다 뚜렷해질 것 같기도 하네요.
10월 15일 삭제예정 강의 문의
0
40
1
강의제목에 10/15일 삭제라고 나와있는데,
0
48
1
스크립트 영상 미일치
0
76
3
감정일기장 다이어리 필터 적용할때 컨텍스트를 Home에서 가져오는 특별한 이유가 궁금합니다.
0
58
2
강의 설명 중에 헷갈리는 것이 있네요
0
58
1
수업자료 관련 문의
0
67
3
1강 동영상 재생 오류
1
67
2
Composition단계에서 `Layer`는 누가 만드는지
0
44
1
Strict Mode 예시 질문!
0
62
2
수업이 안보여요
0
66
1
저자 블로그에 있는 강의는 어떤 강의인가요?
1
63
1
[해결됨]윈도우즈 환경에서 타입 스크립트 파일이 실행이 안됩니다.
1
87
5
4강 카드뉴스 자동화 자료가 안보입니다!!
0
108
2
윈도우즈 환경에서 진행중입니다.
0
64
2
4강 카드뉴스 자동화 자료
6
125
1
라이브 강의 영상 녹화본이 있을까요?
0
100
1
인증이 늦었습니다ㅜㅜ 확인부탁드립니다
0
89
1
스웨거 접속이 안되는데 확인 부탁드립니다.
0
64
1
브라우저의 ES6 모듈(ESM)을 사용하도록 Babel을 설정
0
326
2
할당문
0
365
1
함수 부분 질문입니다.
0
530
1
실행컨텍스트에서 BindingObject를 통한 객체의 프로퍼티와 메서드 질문
0
609
1
코어 자바스크립트 예제 5-14 질문
0
591
3
안녕하세요.
0
480
1

