actionscript 3 Как получить доступ к «this» во встроенной функции - PullRequest
2 голосов
/ 26 сентября 2011

Я пытаюсь сделать что-то вроде:

String.prototype.print=function(){trace(??????)}

Я не могу на всю жизнь найти способ добраться до струны!Да, я знаю, что есть и другие способы решения этой проблемы, но ...

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Не уверен, в чем проблема, использование this отлично работает в анонимных функциях.

  String.prototype.print=function():String{return "printed "+this;}         
  var o:Object = "foo";

  trace(o.print()); // traces: printed foo

Я только что заставил компилятор использовать объект, потому что "foo".print() вызывает

Ошибка: вызов возможно неопределенного метода print через ссылку со статическим типом String.

0 голосов
/ 26 сентября 2011

Похоже, вы смешиваете ActionScript 2 с вашим кодом ActionScript 3.Как сказал Капеп, использование «этого» будет работать в вашем примере.То есть это совершенно правильный код:

String.prototype.print=function(){trace(this)}

Конечно, вы пропустили точку с запятой, но это не должно иметь значения:

String.prototype.print=function(){trace(this);}// точка с запятой после 'trace (this)'

В зависимости от среды разработки у вас могут возникнуть проблемы с просмотром операторов трассировки в целом.Например, в Flex Builder операторы трассировки вообще не отображаются, если вы не находитесь в режиме отладки.Вставьте еще один вызов к trace, чтобы убедиться, что вы видите операторы трассировки.

Как вы сказали, есть много других способов решения этой проблемы, таких как расширение класса String и добавление вашей функции "Print".Если вы действительно не можете заставить это работать, то ваш подход ActionScript 3 (т.е. объектно-ориентированный) может быть вашим лучшим вариантом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...