JavaScript 模块模式 : calling functions within nested function

标签 javascript jquery function

我有这样的代码:

var SEVERINU = SEVERINU || {};

SEVERINU.AutoGallery = {
    galleryImagesNames: new Array(),

    findImages: function () {
        var dirToResearch = this.galleryName;

        $.post(
            "_php/get-files.php", {
            dir: dirToResearch,
            ext: this.fileExtension
        }, function (data) {
            var pliki = $.parseJSON(data);
            console.log(data);
            for (var i in pliki) {
                this.galleryImagesNames.push(pliki[i]); // problem !
            }
        });

    },
}

这一行:this.galleryImagesNames.push(pliki[i]);给我带来了问题。

它说他找不到 var galleryImagesNames 等。

如果我要“深入”,如何调用函数、var?

最佳答案

只需将当前的 this 保存到其他变量,这样它就不会在函数内被覆盖。

var SEVERINU = SEVERINU || {};

SEVERINU.AutoGallery = {
  galleryImagesNames : new Array(),

  findImages : function(){
        var self = this; // keep current value of this in variable named self
        var dirToResearch = this.galleryName;

        $.post(
            "_php/get-files.php",
            {
                dir: dirToResearch,
                ext: this.fileExtension
            },
            function(data){
                var pliki = $.parseJSON(data);
                console.log(data);
                for(var i in pliki){
                    // call the method using self variable instead of this that got overwritten
                    self.galleryImagesNames.push(pliki[i]); 
                }
            }
        );

    },

}

关于JavaScript 模块模式 : calling functions within nested function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594005/

相关文章:

javascript - onclick 不是调用函数

c++ - 根据 C++ 中的参数动态绑定(bind)到函数

javascript - 选择表单的所有复选框

javascript - 如何在sessionStorage中基于数组显示div

javascript - 使用javascript或css更改html5中var的颜色和重量

javascript - 如何在javascript中添加用户定义的变量和一些预定义的整数?

javascript - 从嵌套数组中获取数据

jquery - 如何根据图像宽度的大小设置滑动DIV

javascript - jQuery:固定顶部菜单,如 Facebook 和 Twitter

javascript - 仅传递 javascript 中的第二个参数