我正在尝试编写一个JavaScript类,以根据需要加载脚本文件。我有大部分工作要做。可以使用具有以下语法的库:

var scriptResource = new ScriptResource('location/of/my/script.js');
scriptResource.call('methodName', arg1, arg2);


我想添加一些其他语法糖,以便您可以编写

var scriptResource = new ScriptResource('location/of/my/script.js');
scriptResource.methodName(arg1, arg2);


我几乎可以肯定这是不可能的,但是可能会有一个创造性的解决方案。我想这里需要某种methodCall事件。所以以下可能工作

ScriptResource = function(scriptLocation)
{
    this.onMethodCall = function(methodName)
    {
        this.call(arguments);
    }
}


这段代码显然是很不完整的,但是我希望它能使我对我想做的事情有所了解

这样的事情是否遥不可及?

最佳答案

Firefox中有一个非标准方法__noSuchMethod__可以满足您的需求
看一下
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/noSuchMethod

所以你可以定义

obj.__noSuchMethod__ = function( id, args ) {
    this[id].apply( this, args );
}

10-08 06:21