gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:04:41 25 4
gpt4 key购买 nike

我正在尝试在我的脚本中使用一组函数。
我使用命名空间对象,当我使用这个数组时,我所有的函数都是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com