2016-08-06 5 views
0

내가 좋아하는, 주요 글로벌 VAR을 만들어 :전역 개체 리터럴

commonSearch.js에
$(#search).click(){ 
text = "string from main"; 
openChildWindow(searchwindow.jsp);//same window opening by mainPage1 
}); 

mainPage1.js mainPage2.js에

$(#search).click(){ 
text = "string from main"; 
openChildWindow(searchwindow.jsp); 
}); 

, 나는 액세스 할 입력에 표시 할 var

$("#myInput").val(window.opener.text); 
window.opener.text = ""; // and just reset thevalue to empty 

내가 객체 리터럴을 사용할 수있는, w3.org에서 전역을 사용하지 않는, 그래서 이런 마련 :

mainPage1.js에

myNameSpace = function(){ 
    var text= null; 
    function init(){...} 
    return{ init:init } 
}(); 

mainPage2.js

myNameSpace = function(){ 
    var text= null; 
    function init(){...} 
    return{ init:init } 
}(); 

등 on commonSearch.js

방금 ​​액세스하려면 myNameSpace.text을 (를) 사용하세요? 서로 다른 페이지에서 호출되는 일반적인 검색 창을 사용하고 있기 때문에 내 네임 스페이스의 이름을 변경하지 않았으므로 전역을 해결할 수 없었지만 방금 전역 개체를 만들었습니다. 누군가가 이것에 대해 나를 계몽 해 주시겠습니까?

답변

1

(개체 리터럴 외부에서) text 값을 가져오고 설정하려면 text 값을 반환하는 함수와 text 값을 반환하는 다른 함수를 반환 할 수도 있습니다.

var myNameSpace = function() { 
 
     var text = 'nothing'; 
 

 
     function init() { 
 
     text = 'init'; 
 
     } 
 
     return { 
 
     init: init, 
 
     getText: function() { 
 
      return text; 
 
     }, 
 
     setText: function(newText) { 
 
      text = newText; 
 
     } 
 
     } 
 
    }(); 
 
    console.log(myNameSpace.getText()); 
 
    myNameSpace.init(); 
 
    console.log(myNameSpace.getText()); 
 
    myNameSpace.setText('set'); 
 
    console.log(myNameSpace.getText());

+0

안녕, 답장을 보내 주셔서 감사합니다, 그 확인 그래서 나는 같은 네임 스페이스가 있는지? – bumbumpaw

+0

이름이 같고 동일한 페이지에 포함되어 있으면 항상 다른 하나를 덮어 씁니다. 여러 페이지에 포함 된 코드 인 경우 별도의 자바 스크립트 파일에 넣고 필요한 경우 파일을 포함하는 것이 좋습니다. –

관련 문제