강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của neworldkim5506
neworldkim5506

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

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

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

Đã giải quyết

Viết

·

809

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님의 프로필 이미지
jaenam
Người chia sẻ kiến thức

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

Hình ảnh hồ sơ của neworldkim5506
neworldkim5506

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

Đặt câu hỏi