inflearn logo
강의

講義

知識共有

モダンJavaScriptディープダイブスタディ

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

解決済みの質問

853

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

jaenam

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

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