2012-04-02 4 views
1

프로젝트에서 몇 개의 스크립트를 네임 스페이스로 변환하는 중이고 잠시 동안 검색 한 후에 네임 스페이스 속성에 대한 모범 사례를 따르는 지 확실하지 않습니다. 당신이 볼 수 있듯이,이 경우 속성 이름은 '데이터'jQuery로 속성의 네임 스페이스를 지정하는 가장 좋은 패턴

var myNamespace = myNamespace || {}; 

    $.extend(true, myNamespace, { 
     subNamespace: { 

     } 
    }); 

    $.extend(true, myNamespace.subNamespace, { 
     data: {} 
    }); 

    $(document).ready(function() { 
     myNamespace.subNamespace.data = "Value as string"; 

     alert(myNamespace.subNamespace.data); 
    }); 

입니다 : 여기

내가하는 일의 샘플입니다.

javascript, jquery를 사용하여 네임 스페이스에 속성을 구현하는 좋은 방법입니까?

는 깊이를 추가 jQuery.extend를 사용하는 특별한 이유가 당신에게

답변

1

감사? 언뜻보기에, 당신은뿐만 아니라 객체의 싱글 톤을 사용하여 네임 스페이스를 정의 할 수 있습니다 :

var myNamespace = { 
    subNamespace: { 
     data: "Value as string" 
    } 
}; 
+0

다른 단계에서 subNamespace의 속성 및 기능을 구성 할 수 있기를 원하기 때문에 jQuery.extend를 사용합니다. 솔루션을 사용하면 subNamespace가 같은 위치에 포함될 수있는 모든 것을 정의해야합니다. 내 솔루션을 사용하여 일부 기능과 속성을 한 곳에, 다른 속성을 다른 네임 스페이스에 다른 곳에 추가하면 이전 단계에서 subNamespace 정의를 재정의하지 않겠습니다. 내가 틀렸을 수도 있니?! – Samuel

+0

이렇게하려면'jQuery.extend'가 필요하지 않습니다 :'var top = {}; top.sub = {}; top.sub.data = 'whatever'; ' – David

1

Addy Osmani 몇 가지 무료 전자 책 자바 스크립트 디자인 모범 사례의 훌륭한 작가 및 네임 스페이스 지정 등의 주제에 수많은 블로그 게시물이 있습니다.

그는 AOL의 JS 엔지니어 였지만 최근에 그는 Google로 옮기고 있다고 발표했습니다.

그의 책 중 하나 인 Namespacing 장에 대한 링크가 있지만, 그의 주요 페이지도 체크 아웃하는 것이 좋습니다.

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#detailnamespacing

+0

이 정보를 제공해 주셔서 감사합니다. Google에 'Javascript 네임 스페이스'를 입력하면 결과의 첫 번째 항목은 항상 사용자가 연결하는 링크입니다. 이것은 나의 참고이다 나는 아직도 subjet에 관하여 다른 사람의 통보를 원한다. – Samuel

0

당신은 NameSpace 개체가 이미 존재하기 때문에, 다음 최대한 확장 깊은 사용 extend()를 사용해야하는 경우 : 당신이 개체의 이름을 어떻게 적절한의이

$.extend(true, NameSpace, { 
    subNameSpace : { 
     data : {} 
    } 
}); 

불행하게도 질문 프로젝트에 전적으로 의존합니다. 다른 개발자가 만지지 말아야 할 데이터입니까? 그렇지 않다면 이름의 시작 부분에 밑줄을 사용하는 것이 관습입니다. 얼마나 많은 subNameSpace 님의 의지, 그리고 data 하나 또는 모두에 의존해야합니다.

jQuery 개체의 네임 스페이스를 사용하려는 경우 메서드가 자체 개체에서 실행되는지 또는 선택한 개체 집합에서 실행되는지를 결정해야합니다. 전자의 경우에는 jQuery을 확장하고, 후자의 경우 jQuery.fn을 확장하십시오.

관련 문제