为什么在ActionScript中将日期转换为日期失败?

Wil*_*den 3 apache-flex actionscript types casting date

在ActionScript中,我发现,将日期转换为日期并将其分配给Date类型的变量会引发TypeError:

var date : Date = Date(new Date(2012, 01, 01));

Error #1034: Type Coercion failed: cannot convert "Wed Aug 22 17:06:54 GMT+1000 2012" to Date.
Run Code Online (Sandbox Code Playgroud)

这显然是错误的,但我想知道它为什么会发生.我的理论是,像数字强制转换一样,日期转换被覆盖以尝试转换给定类型而不是仅仅转换它.

有趣的是,将任何其他内容转换为日期并将其分配给日期也会失败:

var date : Date = Date("1/2/3");
var date : Date = Date(123);

// (Both fail)
Run Code Online (Sandbox Code Playgroud)

但是将它分配给对象成功:

var object : Object = Date(new Date(2012, 01, 01));
var object : Object = Date("1/2/3");
var object : Object = Date(123);

// (All succeed)
Run Code Online (Sandbox Code Playgroud)

Ale*_*exG 5

AS3有时会非常混乱和不一致.基本上你没有在代码示例中投射任何东西.

AS3有一些全局的camelCased函数,它们优先于转换运算符.Vector也具有类似的全局功能.

当你在没有new运算符的情况下执行Date(bla)时,它显然会创建该日期的字符串表示...尝试使用as运算符进行转换.