inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모던 자바스크립트 딥다이브 스터디

생성자 함수를 즉시실행함수로 감싸는 이유가 궁금합니다.

해결된 질문

824

jane

작성한 질문수 6

1

예제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();

즉시실행함수 javascript

답변 1

1

정재남

안그래도 되는게 맞습니다.
다만 생성자와 관련한 함수를 스코프로 가둠으로써 보다 명확히 구분하려는 차원에서 그렇게 작성하신게 아닐까 합니다.
나아가 당장은 스코프가 무의미하지만, 나중에 생성자함수 초기화 과정에서 한 번만 쓰일 변수가 필요해진다면 그 의의가 보다 뚜렷해질 것 같기도 하네요.

addToFile function에서 path를 사용해 새로운 파일을 생성

0

19

1

[46강] EventEmitter를 활용한 10가지 패턴 중 플러그인 아키텍처

0

23

2

강의가 누락된것 같습니다.

0

37

2

용어 발음법이 계속 바뀌는 것 같은데 이런 부분들 개선이 가능할까요...?

0

44

1

counter01.html은 어디있을까요?

1

16

1

존재하지 않는 일기 url입력 시 alert이 두 번 떠요

0

40

1

useState 직접 구현 부분에서 질문이 있습니다.

1

43

1

학습을 하고 블로그에 정리를 해도 괜찮을까요?

1

42

1

교재(3쇄)와 강의 내용 문의

0

36

2

섹션2번 부분 강의 화면이 잘 못된것 같아서 문의합니다.

0

23

1

call stack 표현이 잘못표현된것이 아닌가요?

0

81

2

React 와 Virtual DOM 의 이야기 영상 실행이 안됩니다.

0

35

1

일반 강의와 차이점?

1

58

1

!= 연산자의 역할

0

35

1

중요하진 않지만 설명하신부분에서 안된부분..

1

39

1

강의 듣는 순서가 어떻게 되나요?

0

54

1

stopPropagation()에 대해서 질문 있습니다.

0

52

2

12.13) 하단 여백 스타일링 관련 질문 드립니다.

0

68

2

브라우저의 ES6 모듈(ESM)을 사용하도록 Babel을 설정

0

283

2

할당문

0

337

1

함수 부분 질문입니다.

0

503

1

실행컨텍스트에서 BindingObject를 통한 객체의 프로퍼티와 메서드 질문

0

584

1

코어 자바스크립트 예제 5-14 질문

0

551

3

안녕하세요.

0

462

1