我遇到了一个有趣的问题,至少我认为它很有趣,而且有点烦人。我有一堂课,对于这个问题,我会保持非常简单......
class Foo {
static pageChange() {
console.log('The page changed');
}
}
现在,我可以使用 Foo.pageChange() 访问它,没问题,一切都按预期工作。当我尝试动态访问它时,困难的部分和有趣的部分出现了。我有一个单独的对象来监视事件并根据需要处理它们的调度。这与 Google 可视化库有关,我在其中有一个表,并且该表具有与之相关的事件。我有一个对象负责从 PHP 输出创建所有这些。这是一个非常棒的系统,简单来说,你可以在 PHP 中做这样的事情......
GoogleVisLibrary::renderChart(
array(
'chartType' => 'table',
'chartData' => $this->chartData,
'chartOptions' => $this-chartOptions,
'events' => array(
'sort' => 'Foo.pageChange'
)
);
现在这将创建表和所有好东西。问题是在 javascript 中访问 Foo 类中的静态方法。在创建 Foo 作为一个类之前,我所拥有的是这个。
var Foo = {
pageChange: function() {
console.log('page changed');
}
}
然后在我的事件库处理程序中,它看起来像这样..
for(var i = 0, l = events.length; i < l; i++) {
window[events.className][events.fnName].apply();
}
这会很好,因为 Foo 可以通过 window['Foo'] 访问,但是当你使用第一个代码片段中显示的类定义时,你不能再从 window 超级全局访问它,它只输出'undefined'。
那么,有没有什么方法可以通过动态引用访问类中的静态方法,就像您可以通过 window 全局访问 Foo 对象一样?
我希望这是有道理的,我正在正确解释它。如果任何事情没有意义,请随时提问,我会尽量解释得更好。预先感谢您提供的任何帮助。