我发现在我的日常Flex/Flash工作中,我做了很多这样的编号:
//Calling a function... MyCustomObject(container.getChildAt(i)).mySpecialFunction();
问题是 - 这是最好的方法吗?我应该这样做:
//Calling a function var tempItem:MyCustomObject = container.getChildAt(i) as MyCustomObject; tempItem.mySpecialFunction();
这可能是偶然的,但我只是想知道是否有"接受"的方式或首选方式来做到这一点.第二个选项似乎更具可读性,但我想知道创建一个新变量是否需要更多的性能影响.或者这一切都取决于风格和偏好?
重要的是要记住显式转换和使用as
关键字之间存在差异.转换失败时会抛出错误,而as
关键字则不会(它只返回null).
// a casting error try { var number:int = 666; var urlreq:URLRequest = URLRequest( number ); } catch(e:TypeError) { // TypeError: Error #1034: Type Coercion failed: cannot // convert 666 to flash.net.URLRequest. trace(e); }
尽管as
关键字默默地失败:
var number:int = 666; var urlreq:URLRequest = number as URLRequest; trace(urlreq); // prints null to the debug pane
就个人而言,在决定使用方法时,我会记住这些行为.一般来说,我建议明确地进行投射,因为你会确切地知道投射失败的方式/时间.但是,通常,您可能希望无声地失败并继续.