Могу ли я расширить прототип функции в ActionScript? - PullRequest
2 голосов
/ 09 мая 2009

Я пытаюсь включить функцию bind() prototype.js в мой Flash-компонент. Я нашел эту статью Джордана Броуза, которая дала мне надежду. Он предложил использовать этот фрагмент кода:

        Function.prototype.bind = function():Function {
          var __method:Function = this;
          var object:Object = arguments[0];
          return function():void {
            __method.apply(object, arguments);
          }
        }

Итак, я помещаю это в мой класс, вне каких-либо методов или конструкторов. Однако, когда я пытаюсь вызвать bind () для функции, я получаю эту ошибку компилятора:

1061: вызов возможно неопределенного метод связать через ссылку с статический тип Функция.

Есть идеи?

1 Ответ

1 голос
/ 09 мая 2009

Вы расширяете Function объекта prototype. Это не относится к классу. Это не метод вашего класса.

Объект Function в основном является встроенным типом, а его prototype является своего рода базовым классом. Расширение prototype путем добавления bind всех объектов, которые наследуются от Function, то есть всех функций, включая те, которые вы определили, будет иметь метод bind, который создает замыкание.

EDIT:

Этот вопрос на самом деле является дубликатом, и на него уже дан ответ:

Проблема ActionScript с переменными прототипа и статического типа

И в соответствии с этим вопросом удалите функцию:, чтобы она заработала.

...