【发布时间】:2014-03-06 15:27:20
【问题描述】:
我有一个数组,我正在像这样动态添加对象
var _plugins = [];
this.registerPlugin = function(plugin){
_plugins.push(plugin);
plugin.onInit()
},
这一切都在一个类中,我正在尝试使用这样的方法,它应该运行传递给meth的方法
this.runPluginMethod = function(meth, call_obj){
for (x in _plugins){
x[meth](call_obj)
}
}
我添加到 _plugins 数组的对象是这样创建的
var ourPlugin = Object.create(babblevoicePlugin);
Object.defineProperty(ourPlugin, 'onInit', {value : function()
{
console.log('this is from reflex oninit')
}});
当我尝试运行 mianClass.runPluginMethod('onInit', 'a') 时,它什么也没做,也没有像我想的那样运行 console.log。
有人可以帮忙吗?难道我做错了什么?这可能吗?
【问题讨论】:
-
尝试调试。当您运行
this.runPluginMethod时,x[meth]的结果是什么? -
我认为你使用的 for 错误应该是 _plugins[x] javascript foreach 之类的语法不适用于其他语言
-
什么是
this?mainClass是什么?发布一个完整但最小的工作示例而不是一堆片段怎么样? -
@Carlos487 是正确的,我使用了 for 语句错误,在更改此语句后调试到语句 plugins[x] Object {} _plugins[x]['oninit'] undefined _plugins[x] ['onInit'] function () { console.log('this is from reflex oninit') } _plugins[x]['onInit']() TypeError: Cannot call method 'log' of null
-
你可以试试这个 (_plugins[x])['onInit'] 看看它是否是一个函数,其他语法是用于二维数组
标签: javascript arrays object methods