2014-01-07 2 views
0

JavaScript에서 구조 및 익명 함수에 대해 배우려고합니다.이 방법으로 많은 코드 나 라이브러리를 살펴 봤습니다. 그러나 그들이 그것을하는 방식을 따라하려고 할 때, 그것은 잘못된 착각이라고 부를 것 같습니다. 여기 내 코드는 다음과 같습니다.프로토 타입 함수를 호출하면 잘못된 함수가 반복됩니다.

파일 1 : startUp;

this.project = this.project || {}; 

(function(){ 

    project.init = function(){ 
     console.log("startUp"); 
     project.Setup(); 

    } 

}()); 

파일 2 : 설정에서 안그래가 호출되지 않는 몇 가지 이유에 대한 설정

this.project = this.project || {}; 

(function() { 

    var Setup = function() { 
     this.init(); 
    }; 

    var p = Setup.prototype; 

    p.init = function() { 
     console.log("Setup"); 
    }; 

    project.Setup = Setup; 
}()); 

라고하지만, 시작 안그래 미친 듯이 반복된다.

답변

2

인사이드 Setup, this은 귀하가 생각하는 것과 다릅니다. this은 함수 호출 방식에 따라 설정됩니다.

project.Setup();을 입력하면 this의 값은 Setup입니다. project입니다. 그래서 this.init()project.int()입니다. 어떤 호출은 project.Setup(); 등이며, 무한 루프가 발생합니다.

Setup.prototype.initnew Setup 일 경우에만 호출됩니다.

+0

오, 완벽하게 당신에게 감사드립니다 : D – user629283

+0

그냥 '새로운 설치'는 정말로 해결책이 아닙니다. 나는 단지'이'(그리고'new')가 어떻게 작동했는지 설명하려고했습니다. –

+0

아 맞아.하지만 내게 맞는 일을하는 것 같아. 어쨌든 건배 – user629283

관련 문제