Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干全局变量_Javascript_Variables_Backbone.js_Global - Fatal编程技术网

Javascript 主干全局变量

Javascript 主干全局变量,javascript,variables,backbone.js,global,Javascript,Variables,Backbone.js,Global,在这种情况下,如何在主干中使用全局变量?问题是我有120多个视图,比如HomeView,要在所有视图中定义相同的polyglotvar太难了。还有别的办法吗 var TranslatetView = Backbone.View.extend({ window.polyglot = new Polyglot({phrases:{'hello':'hello'}}); var polyglot = window.polyglot.phrases; }); var HomeV

在这种情况下,如何在主干中使用全局变量?问题是我有120多个视图,比如
HomeView
,要在所有视图中定义相同的
polyglot
var太难了。还有别的办法吗

var TranslatetView = Backbone.View.extend({ 
    window.polyglot = new Polyglot({phrases:{'hello':'hello'}});
    var polyglot    = window.polyglot.phrases;
});

var HomeView = Backbone.View.extend({ 
    console.log(polyglot.hello);
});

我想说的是,全局变量是不好的。试着把自己限制在尽可能少的范围内。全局命名空间污染非常危险,将来可能会导致意外错误

我经常使用的一种技术是通过创建自己的名称空间来解决污染全局名称空间的问题

例如,您可以执行以下操作

window.myNamespace = window.myNameSpace || {};
window.myNamespace.TranslateView = ...;
window.myNamespace.HomeView = ...;
如果HomeView和TranslateView属于不同的模块,也可以为它们命名名称空间

window.myNamespace.TransteModule = {};
window.myNamespace.TransteModule.TranslateView = ....;
这样,您只需为名称空间创建一个全局变量。您还可以通过其包含模块轻松地识别视图