当前位置:  开发笔记 > 编程语言 > 正文

将值分配给JavaScript中的全局变量列表

如何解决《将值分配给JavaScript中的全局变量列表》经验,为你挑选了2个好方法。

嘿,现在我正在使用jQuery并且我有一些全局变量来保存一些预加载的ajax东西(预加载以使页面变得漂亮和快速):

$.get("content.py?pageName=viewer", function(data)
    {viewer = data;});
$.get("content.py?pageName=artists", function(data)
    {artists = data;});
$.get("content.py?pageName=instores", function(data)
    {instores = data;});
$.get("content.py?pageName=specs", function(data)
    {specs = data;});
$.get("content.py?pageName=about", function(data)
    {about = data;});

正如你所看到的,我们严重违反DRY原则,但是......我真的没有办法解决这个问题......任何想法?

也许是阵列?



1> Ates Goral..:

使用jQuery每个方法迭代一个页面名称数组,然后设置一个全局(在窗口范围内)变量:

jQuery.each(
    ["viewer", "artists", "instores", "specs", "about"],
    function (page) {
        $.get("content.py?pageName=" + page,
            new Function("window[" + page + "] = arguments[0]"));
    }
);

更新:实际上,你甚至不需要"新功能":

jQuery.each(
    ["viewer", "artists", "instores", "specs", "about"],
    function (page) {
        $.get("content.py?pageName=" + page, function () { window[page] = arguments[0]; });
    }
);



2> Shog9..:

你不需要eval()Function()为此.你怀疑,数组可以很好地完成工作:

(function() // keep outer scope clean
{
   // pages to load. Each name is used both for the request and the name
   // of the property to store the result in (so keep them valid identifiers
   // unless you want to use window['my funky page'] to retrieve them)
   var pages = ['viewer', 'artists', 'instores', 'specs', 'about'];

   for (var i=0; i

    
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有