javascript - 如何在 Javascript 命名空间脚本中创建函数数组

标签 javascript arrays namespaces function-pointers undefined

我正在尝试在我的脚本中使用一组函数。
我使用命名空间对象,当我使用这个数组时,我所有的函数都是 undefined .

如何使用良好的函数引用创建这个数组来处理这个 processAllFunction ?

看我的代码:

var myns = myns || {};
myns.test = myns.test || {};
myns.test.util = {
    myOne: function(m) {
        return m;
    },
    myTwo: function(m) {
        return m;
    },
    processAllFunction: function(m) {
        for(var i=0; i<this.replaceFilters.length; i++) {
            if(typeof(this.replaceFilters[i])==='function') {
            m= this.replaceFilters[i](m);
        }
        }
        console.log(this.replaceFilters); // undefined functions
        return m;
    },
    replaceFilters: [this.myOne, this.myTwo]
};

最佳答案

在您的代码中,this要么是指window或到 this 的值在您定义的函数范围内 myns ,这就是为什么您会看到 undefined .您需要的是对调用对象的引用。你应该能够用这样的东西来做到这一点:

var myns = myns || {};
myns.test = myns.test || {};
myns.test.util = {
    myOne: function(m) {
        return m;
    },
    myTwo: function(m) {
        return m;
    },
    processAllFunction: function(m) {
        for(var i = 0; i < this.getReplaceFilters().length; i++) {
            if(typeof(this.getReplaceFilters()[i]) === 'function') {
               m= this.replaceFilters[i](m);
            }
        }
        return m;
    },
    getReplaceFilters: function() {
        return [this.myOne, this.myTwo];
    }    
};

请注意,不是 replaceFilters仅具有值 [this.myOne, this.myTwo] ,它现在是一个返回 [this.myOne, this.myTwo] 的函数.这是因为当您现在调用 myns.test.util.getReplaceFilters 时, this指向my.test.util .同样的事情发生在 this当您调用 myns.test.util.processAllFunction() ; this再次设置为 myns.test.util .这是this的这个值当您调用 getReplaceFilters 时也会用到内processAllFunction .

关于javascript - 如何在 Javascript 命名空间脚本中创建函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11190326/

相关文章:

Python:获取分割图中每个簇的边界框坐标(2D numpy 数组)

php - 多维数组

xml - 添加额外的 xmlns :xsi attributes to XML element

c++ - 命名空间中的内联函数给出了对 C++ 的 undefined reference

javascript - 如何使用 jquery 动态添加特定 div 中的元素。我要添加评论

javascript - 如何禁用 View 中特定状态的输入。 Angular

javascript - jQuery 在 mouseout() 菜单或子菜单后关闭当前子菜单

javascript - 色方算法

php - 将一维数组转换为多维数组

xml - 使用 XSLT 转换 EntityObject XML 的问题