2015-01-22 2 views
0

탐색하는 동안 웹 페이지의 소스 코드를보고 특정 상황이 어떻게 실현되었는지를 자주 확인합니다. 나는 항상 window 객체 (같은이 accepted answer에서 설명)에 속성을 연결하는 나쁜 관행이 있다는 인상이었다 window.myApp.apiKey = 12345; 또는 window.myApp.welcomeMsg = "Hello there!";언제 창에 속성을 첨부해도 괜찮습니까?

하지만 myApp과 같다 : 물건처럼 자주 볼

한 가지입니다 브랜드 이름이기 때문에 일종의 네임 스페이스 &으로 사용됩니다. 어떤 제품과도 충돌하지 않을 것입니다.

아직도 - 어떻게 이런 식으로해도 괜찮습니까? 그것에 대한 지표가 있습니까? (즉, 실제 생활에서 빠르게 변할 수있는 프로젝트에서 제 3의 라이브러리가 사용되지 않을 때). 나는 다음과 같은 방법을 사용하는 것이 일반적

+0

을 그것은 현재 우리가 모듈이 더 이상 확인하지 않습니다. – elclanrs

+0

@elclanrs 당신이 정교한 시겠어요 그쪽으로 조금 더? – Sven

+0

속성을 창에 연결하는 것을 벗어날 수 없습니다. 이것은 마스터 객체입니다. 그러나이를 최소로 줄이거 나 표현식에 일반이 아닌 이름을 사용해야합니다. – Mouser

답변

1

...

if (typeof window['myApp']=='undefined') {alert('its okay.');} 
else {alert('Error: native API added, have AJAX message server, email you.');} 

... 물론이 작업을 수행해야하는지 여부를 주관적이다, 나는 개인적으로 사용 ...

var option = new function() {this.name = '';} 
option.whatever = 'this string'; 
alert(option.whatever);//'this string' 

... 그러나 나는 모든 코드를 사용하는 것처럼 이름을 바꾸고 나중에 수정할 수 있습니다.

잉고 버크는 궁극적으로 모든 것이 window 객체의 객체 아이가 보인다 코멘트에서 지적 하듯이

는 해당 개체 사이의 유일한 차이점은 예를 들어, 당신은 삭제할 수 없습니다 (그들과 상호 작용하는 방법을 컨텍스트 및 입니다 당신이 delete window.myObjectwindow.myObject = 1;로 정의 할 수있을 때 비록 var에 의해 정의 된 객체입니다.

을 심층 정보가 the answer for 'Javascript global variables' 참조 자세한 내용은.

+0

전역 범위에서 실행될 경우 여전히 window [ 'option']'이 표시됩니다. –

+0

@ IngoBürk 그렇습니다. 왜 덜 일반적인 것으로 이름을 바꿉니 까?두 단어 사이에 밑줄을 추가하는 것은 객체 이름에 공백이나 구분 기호가 없으므로 sans 프레임 워크 (실제 코드 만 수행)를 수행하는 좋은 방법입니다. 객체 감지가 존재하는 한 그 이름을 가진 객체가 존재하지 않는다면 괜찮을 것이며, 클라이언트가 AJAX를 사용한다면 맨 위에 전자 메일을 보내도록 할 수 있습니다. 주관적으로 얼마나 효과적으로 이름을 짓는가) 동일한 이름을 가진 인스턴스가 정의되면 그 위에 머무를 수 있습니다. – John

+0

내 요점은 당신의 대답은 의미가 없다는 것입니다. 지역 변수를 사용하면이 문제를 피할 수 있지만 글로벌 범위에서는 사실이 아닙니다 (전역 변수 사용이 절대적으로 정확함에도 불구하고). 그것은 당신이 (아마도) 말하고자하는 것의 * 필수적인 부분과 같은 것이 당신의 대답에 실제로 언급되지 않은 채로 남아 있습니다. –

관련 문제