我在 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/