我正在尝试编写一个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 );
}