2011-04-24 7 views
2

맞춤형 세계 window 범위를 특별 전역으로 교환 할 수 있습니까? 나는 단지 with이 의도 된 것이라고 생각했지만 다른 "조회"범위 만 쌓을뿐입니다. 예 : 변경 자바 스크립트 스코프

test={}; 
with(test){ 
    a=1; 
} 

는 재산 test.a하지만 window.a을 만들지 않습니다.

그래서 window 개체에는 JS 고유의 특수한 품질이 있습니다. 자체 코드로 다시 만들 수 없습니까?

+0

이 작업을 수행 할 필요가 없다고 생각하지 마십시오. 필요하지는 않지만 이것이 필요한 이유에 대해 자세히 설명해 줄 수 있습니까 (아마도 더 좋은 해결책이 될 수 있습니다). – Ben

+0

나는 명시 적 할당 언어를 사용하지 않고 자신의 네임 스페이스에서 함수와 변수를 정의하는 것을 좋아한다. test = { 'a': 1; 'b': function() {... code ...}); – dronus

+0

아니요, 전역 개체를 변경할 수 없습니다. – Reid

답변

2

with에 지정된 개체에 속성이 있으면 수정되지만 결코 만들어지지 않습니다. 이것은 with을 사용하는 주요한 "잡기"이며 피해야하는 주요 이유입니다.

+0

예, 함께 사용하지 마십시오. 코드를 혼란스럽게 할 것입니다. –

+0

예, 'with'의 결함에 대해 알고 있습니다. 제 질문에 그 사실을 보여주었습니다. 이제 해결책을 찾고 있습니다. – dronus

+0

오, 그러면 내 대답은 "한 명도 없다"였을 것입니다. –

관련 문제