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