2012-02-10 4 views
3

A.js에 함수 onChangeBrand()이 있고 B.js에 같은 이름이 있습니다.자바 스크립트 함수 호출 방법

어떻게 이런 상황을 피할 수 있습니까? 제약이 있습니다 - 함수 이름을 변경할 수 없습니다. 및 Js 파일을 모두 편집 할 수 없으므로 네임 스페이스가 적합하지 않습니다.

A.onChangeBrand() 또는 B.onChangeBrand()과 같은 것을 호출 할 수 있습니까?

+0

이 파일을로드하는'script' 태그 사이에 페이지에 js 코드를 넣을 수 있습니까? – Cheery

+0

예 @ 체리 내 src에 넣고 있습니다. – BOSS

+0

닉네임이 약간 다릅니다. 그리고 두 번째 질문 -이 함수는 해당 파일에서 호출을 받거나 사용하는 경우에만 사용합니까? – Cheery

답변

1

좋아, 네임 스페이스가 당신을 위해하지 않으며 당신이 script 태그 이러한 파일을로드 사이에 코드를 삽입 할 수있는 경우 그 a_onChangeBrand()

<script src='a.js'></script> 
<script> 
var a_onChangeBrand = onChangeBrand; // copy the function 
</script> 
<script src='b.js'></script> 

은 B에서 a.js 및 onChangeBrand()에서 함수를 호출합니다 .js

그러나 a.js 및 b.js의 일부 기능이이 기능을 사용하고 있다면로드 된 마지막 파일에서 함수를 호출 할 수 있습니다.

<script src="http://exmpale.com/a.js"></script> 
<script> 
A = { onChangeBrand:onChangeBrand }; 
</script> 

<script src="http://exmpale.com/b.js"></script> 
<script> 
B = { onChangeBrand:onChangeBrand }; 
</script> 

이 두 기능은 이제 네임 스페이스하고과 같이 호출 할 수 있습니다 : 당신은 소스에 액세스 할 수없는 경우

+0

이것은 뭔가 상자 밖의 생각입니다. 감사합니다 @ Cheery – BOSS

1

JavaScript에서 네임 스페이스를 사용하는 방법을 확인하십시오.이 두 파일을 편집 할 수 있다면 a.js와 b.js를 수정 한 다음 네임 스페이스를 선언 할 수 있습니다. 여기에 가장 좋은 대답을 참조하십시오 : How do I declare a namespace in JavaScript?

0

당신은 당신의 기능 중 하나에이 작업을 수행 할 수 있습니다 ..

var myNS = new (function() { 

    this.onChangeBrand= function() { 
     alert('hello!'); 
    }; 

})(); 

을 다음

myNS.onChangeBrand();는 마찬가지로 다른 기능에 myNS2를 사용하여 호출합니다. 이를 네임 스페이스라고합니다.

1

은 다음 해결책 (안 예쁜 마음을)입니다 :

A.onChangeBrand();  
B.onChangeBrand(); 
관련 문제