2013-04-09 2 views
1

.js 파일에있는 스크립트에는 많은 함수가 있습니다. 다른 사람이 작성한 다른 스크립트가 내 스크립트에서와 같은 함수 이름을 사용하는 경우 어떻게 동일한 페이지 내의 내 함수 이름과의 충돌을 피할 수 있습니까?함수 이름 지정 규칙과의 충돌을 피하십시오. javascript

이 방법이 있습니까?

+0

u는 완전히 피할 수는 없지만, 그 정도 의미 –

+0

_some 다른 guys_의 것? – Halcyon

답변

4

를 사용하여 네임 스페이스 ..

var company = {}; 

company.doSomething = function() { 
}; 

company.project = {}; 
company.project.submodule = {}; 
company.project.submodule.doSomething = function() {}; 
6

당신이 당신의 스크립트 밖에서 그 기능에 액세스 할 필요가없는 경우는 즉시 호출 함수 표현식에 전체 스크립트를 래핑 할 수 있습니다

(function() { 
    // Your code here 
}()); 

이를 새로운 범위를 도입하므로 그 안에있는 모든 선언은 그 안에 표시되지 않습니다.

당신은 "네임 스페이스"의 방법으로 당신의 기능을 노출, 해당 범위의 외부 액세스를 필요로 할 경우

var YourStuff = (function() { 
    // Private functions etc... 

    // Expose public methods 
    return { 
     someMethod: function() {} 
    }; 
}()); 

을 충돌의 기회를, 당신은 단지 하나의 글로벌 식별자를 소개하는이 방법을 복용 줄임으로써 . 당신은 다음과 같은 방법을 호출 할 수 있습니다 : u는 클래스 내부에 포장하는 경우

YourStuff.someMethod(); 
+0

@ alex23 - 어떻게 타이밍에 영향을 미칠 수 있습니까? 그리고 "클로저 오버랩"이란 무엇을 의미합니까? –

+0

@ alex23 - 그렇습니다. 자바 스크립트에는 "비공개"와 같은 것이 없습니다. IIFE는 다른 함수 호출과 마찬가지로 평가 된 후에 실행됩니다. 그것은 DOM과 아무 관련이 없습니다. DOM 준비가 될 때까지 기다릴 필요가 있다면 IIFE 내에서 DOM 준비 짝수 처리기를 사용할 수 있습니다. –

관련 문제