inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Nghiên cứu chuyên sâu về JavaScript hiện đại

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

Đã giải quyết

834

jane

6 câu hỏi đã được viết

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

Câu trả lời 1

1

jaenam

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

수강자료 다운로드 관련 문의

0

16

2

선택정렬 이해하기 & 구현하기

0

9

1

mission12-01 guide.md파일 누락

0

14

1

자료집 관련

0

24

2

13. (App 2) 기본기 훈련 에서

0

31

1

챌린지 시작일 문의

0

39

0

2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중

0

27

1

11차시 Antigravity IDE 설치 후

0

32

1

처음 에이전트 설정을 잘못 했을 경우 수정 하는 방법

0

36

1

5,6,7,8 내용이 없어요

0

33

1

ThemeProvider를 이용해서 NextThemeProvider를 따로 생성하여 Layout.tsx에 적용하는 이유는 뭘까요?

0

31

1

mission 09-01 을 수행할 수 없어요

0

33

1

Context API vs Zustand 그리고 Auth

0

39

2

순수 함수 / 순수 컴포넌트

0

27

1

css box-sizing 관련 질문

0

35

2

스니펫이 이상해요

0

34

2

Editor Component의 최적화 불가능 이슈

0

39

2

useCallback ⊂ useMemo

0

38

2

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

0

301

2

할당문

0

347

1

함수 부분 질문입니다.

0

514

1

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

0

594

1

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

0

574

3

안녕하세요.

0

466

1