javascript - 全局对象文字

标签 javascript jquery object-literal

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

在 mainPage1.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来访问它? 由于我将使用由不同页面调用的公共(public)搜索窗口,因此我没有重命名我的 namespace ,我认为我无法解决全局问题,但我只是创建了一个全局对象。有人可以告诉我这一点吗?

最佳答案

如果您想获取和设置 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());

关于javascript - 全局对象文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799793/

相关文章:

javascript - 禁用 Javascript 元素不适用于 php DOM

javascript - 模拟内部 axios.create()

JQuery 日期选择器

javascript - 在任意非空白字符上包装文本

javascript - 这个 Javascript 对象字面量键限制是否严格是由于解析?

javascript - 为什么我不能在此对象文字中创建等于全局函数的方法? (javascript)

javascript - 替换对象值 lodash

javascript - 我怎样才能让我的柜台看起来不那么假?

javascript - 从中心缩放后将元素保持在原始位置

JavaScript - 将对象文字作为第二个参数传递给 Object.create()