为了使 SWF 的公共 API 更可靠,我通常使用 try/catch 块将回调包装在闭包中:
private function addCallback(functionName:String, closure:Function):void {
ExternalInterface.addCallback(functionName, wrapEventHandler(closure));
}
private function wrapEventHandler(closure:Function):Function {
var self:Main = this;
return function(...arguments):* {
try {
return closure.apply(self, arguments);
} catch (error:Error) {
// Print error report here
}
}
}
当'closure'发生异常时,将打印错误报告。
我注意到即使使用“null”而不是“self”,它也能正常工作:
closure.apply(null, arguments);
在这种情况下使用“null”是否安全?
我在 ExternalInterface 注册的回调不是静态函数;他们使用 Main 的类字段。
它适用于 null、NaN 和 self。我找不到使用 NaN/null 的任何问题。