全局对象文字

时间:2016-08-06 01:38:30

标签: javascript jquery object-literal

我在main中创建了全局变量,例如:

主页1.js上的

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

在mainPage2.js上

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

在commonSearch.js上,我访问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 }
}();

所以关于commonSearch.js

我只是使用myNameSpace.text来访问它? 由于生病使用不同页面调用的常见搜索窗口,我没有重命名我的命名空间,我想我无法解决全局变量,但我只是创建了一个全局对象。有人可以请教我这个。

1 个答案:

答案 0 :(得分: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());

相关问题