下午想写一个方法,根据对象的类型返回格式化后的字符串。对日期及字符串类型的相对容易判断,对数字型的本想做成如果是Number则显示2位小数(因系统中金额一般是显示2位小数)。于是开始研究怎么判断int和Number,写了一段测试代码打印出来后发现,不管声明一个对象o为int还是Number并赋值,o is int和o is Number似乎总是true。
继续Google "actionscript check int or number",看了一篇文章《[AS 3 ] check if a variable is "int" or "Number"》,并测试之后,得结论如下:
1.如果对象是int类型,则一定是Number类型。反之则不是。
2.如果只是声明不赋初值,则对象的类型与声明的类型一致。
3.常量数值的类型跟小数点没关系,跟小数点后有没有效数字有关。如3、3.00都是int类型,3.1才是Number类型。
4.将Number类型赋值给声明为int类型的对象时,数值会被取整并转成int类型。将int赋值给Number类型对象时,对象还是int类型,不会转成Number。
另外,在该文中看到getQualifiedClassName方法,搜flex帮助,在“Reducing SWF file sizes”中看到getQualifiedClassName的说明,该方法类似is运算符,也可以用来判断对象的类型,与is运算符不同,用is判断时,由于有引用到实际的类,所以会把类编译到swf中,但使用getQualifiedClassName时只是返回对象类型的字符串,所以判断时不会把类编译进swf文件中。