0

我将 AS3 编译器错误 1119 的原因缩小到与此类似的代码:

var test_inst:Number = 2.953;
trace(test_inst);
trace(test_inst.constructor);

我收到错误“1119:通过静态类型 Number 的引用访问可能未定义的属性构造函数”。

现在,如果我省略变量的类型,我不会得到那个错误:

var test_inst = 2.953;
trace(test_inst);
trace(test_inst.constructor);

它产生预期的输出:

2.953
[class Number]

那么有什么关系呢?我喜欢显式键入变量,那么除了不提供变量的类型之外,还有什么方法可以解决这个错误?

4

3 回答 3

3

好的,这有点难以解释......首先,这是它的工作原理:

var test_inst:Number = 2.953;
trace(test_inst);
trace((test_inst as Object).constructor);

据我了解,这是因为该属性constructor来自 ActionScript 3 的 ECMAScript 特性。它是Object实例的 ECMAScript 属性,通过原型继承。在 ActionScript 3 的严格类型世界(也使用不同的继承机制)中,此属性因此不可用。

问候
back2dos

于 2010-05-11T16:03:54.487 回答
0

http://www.kirupa.com/forum/showpost.php?p=1951137&postcount=214

这有你需要的所有信息:)

基本上, trace(test_inst["constructor"]) 会起作用。

于 2010-05-11T16:02:54.770 回答
0

Object(someobject).constructor 将实现相同的目标——而且您不必处理编译器问题。

Object(someinst) === someclass 也可以。

dh

于 2010-05-11T21:57:03.300 回答