Явная типизация переменных заставляет компилятор думать, что экземпляр встроенного типа не имеет свойства, которое он имеет - PullRequest
0 голосов
/ 11 мая 2010

Я сузил причины ошибки 1119 компилятора AS3 до кода, который выглядит примерно так:

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]

Так в чем же дело? Мне нравится явно вводить переменные, поэтому есть ли способ решить эту ошибку, кроме указания типа переменной?

Ответы [ 3 ]

3 голосов
/ 11 мая 2010

хорошо, это немного сложно объяснить ... прежде всего, вот как это работает:

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

Насколько я понимаю, это связано с тем, что свойство constructor происходит от ECMAScript-природы ActionScript 3. Это свойство ECMAScript Object экземпляров и наследуется через прототипы, Из строго типизированного мира ActionScript 3 (в котором также используется другой механизм наследования) это свойство недоступно.

Greetz
back2dos

0 голосов
/ 12 мая 2010

Object (someobject) .constructor достигнет того же самого - и вам не придется иметь дело с проблемами компилятора.

Object (someinst) === Someclass также работает.

дк

0 голосов
/ 11 мая 2010

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

, в котором есть вся необходимая информация:)

в принципе, трассировка (test_inst ["constructor"]) будет работать.

...