我使用了一个全局对象。我知道使用全局对象的缺点,但在这种情况下我想使用它。
我将此全局对象称为对象管道b.c.它将我的模型分支到我的控制器,反之亦然...也许应该称之为对象分支...反正......
我犯的错误是我认为我在任何时候只运行一个模型......但我没有,有多个模型。
因此我不能使用单个静态实现,我需要基于实例的每个模型运行一个,一个全局对象管道。
这是静态版本。 MC代表型号/控制器。
/********************************************************************************************
*
* MC - Model/Controller Types
*
*******************************************************************************************/
var MC = {};
/**
** Object Pipe
*/
MC.o_p = {
model : 'default',
result : 'continue',
page : {},
args : {},
server : {},
hash : localStorage.hash
};
我想过做这样的事情:
MC.o_p1 = function() {
return {
model : 'default',
result : 'continue',
page : {},
args : {},
server : {},
hash : localStorage.hash
}
}
但现在返回对象在本地范围内,不管是什么调用它。
我需要基于全局实例的对象。
我不确定我是不是在想这个或者我在问什么可能?
答案 0 :(得分:3)
将您的软件包私下保留,只需拥有一些访问功能:
var myModel = (function() {
var model_vars = {
model: 'default',
result: 'continue',
page: {},
args: {},
server: {},
hash: localStorage.hash
};
return function() {
this.get = function(ele) {
if (model_vars.hasOwnProperty(ele)) {
return model_vars[ele];
}
};
this.set = function(ele, value) {
if (model_vars.hasOwnProperty(ele)) {
return model_vars[ele] = value;
}
};
};
})();
然后你可以这样做:
Model = new myModel();
答案 1 :(得分:1)
您可以传入全局范围并在需要时使用它,如下所示:
MC.o_p1 = function(global) {
return {
model : 'default',
result : 'continue',
page : {},
args : {},
server : {},
hash : global.localStorage.hash
}
}(window);
答案 2 :(得分:1)
var msg = 'window is global in browsers';
window.alert(msg);
alert('or we can just use alert without accessing from window because, '+msg);
function isWindowReallyGlobalInBrowsers(){
window.newMsg = 'Did you see var newMsg get declared anywhere?';
alert(newMsg + ' It works because ' +msg);
}
isWindowReallyGlobalInBrowsers();
在浏览器控制台中试用它。根据需要提问。