Actionscript 3 显式键入变量会使编译器认为内置类型的实例不';I don’我没有财产,它确实有
我将AS3编译器错误1119的原因缩小到如下代码:Actionscript 3 显式键入变量会使编译器认为内置类型的实例不';I don’我没有财产,它确实有,actionscript-3,constructor,types,compiler-errors,explicit,Actionscript 3,Constructor,Types,Compiler Errors,Explicit,我将AS3编译器错误1119的原因缩小到如下代码: var test_inst:Number = 2.953; trace(test_inst); trace(test_inst.constructor); 我得到错误“1119:通过静态类型编号的引用访问可能未定义的属性构造函数” 现在,如果省略变量的类型,则不会出现该错误: var test_inst = 2.953; trace(test_inst); trace(test_inst.constructor); 它产生预期的输出: 2.
var test_inst:Number = 2.953;
trace(test_inst);
trace(test_inst.constructor);
我得到错误“1119:通过静态类型编号的引用访问可能未定义的属性构造函数”
现在,如果省略变量的类型,则不会出现该错误:
var test_inst = 2.953;
trace(test_inst);
trace(test_inst.constructor);
它产生预期的输出:
2.953
[class Number]
那怎么办?我喜欢显式地键入变量,所以除了不提供变量的类型之外,还有什么方法可以解决这个错误吗?
包含您需要的所有信息:)
基本上,跟踪(test_inst[“constructor”])将起作用。
包含您需要的所有信息:)
基本上,跟踪(test_inst[“constructor”])可以工作。好的,这有点难以解释。。。首先,它是如何工作的:
var test_inst:Number = 2.953;
trace(test_inst);
trace((test_inst as Object).constructor);
据我所知,这是因为属性构造函数
来自ActionScript 3的ECMAScript特性。它是对象
实例的ECMAScript属性,通过继承而来。在ActionScript 3的严格类型世界中(它也使用不同的继承机制),此属性因此不可用
格里茨back2dos好的,这有点难以解释。。。首先,它是如何工作的:
var test_inst:Number = 2.953;
trace(test_inst);
trace((test_inst as Object).constructor);
据我所知,这是因为属性构造函数
来自ActionScript 3的ECMAScript特性。它是对象
实例的ECMAScript属性,通过继承而来。在ActionScript 3的严格类型世界中(它也使用不同的继承机制),此属性因此不可用
格里茨back2dos对象(someobject)。构造函数将实现同样的功能——您不必处理编译器问题 对象(someinst)==someclass也可以工作 dh对象(someobject)。构造函数将实现同样的功能——而且您不必处理编译器问题 对象(someinst)==someclass也可以工作
dh没错。如果您在没有严格模式的情况下编译,它也可以工作——这并不是真正推荐的模式。没错。如果您在没有严格模式的情况下编译,它也可以工作——这并不推荐。