![]() |
Какой смысл в Function.call()
Углубляясь в АС3, нашёл в справочнике
apply(thisArg:*, argArray:*):* Указывает значение thisObject, используемого в любой функции, вызываемой ActionScript. Function call(thisArg:*, ... args):* Вызывает функцию, представленную объектом Function. Вот только смысла их я не понял... Функция вызывается просто через имя(аргументы) И причём тут thisArg? |
thisArg - устанавливает объект активации. Проще говоря, куда ссылается this. Для методов в AS3, слава богу, не работает.
У тебя есть метод method(a,b,c) и есть массив [0,4,6]. Ты можешь вызвать этот метод вот так: Код AS3:
|
Они полезны, когда надо вызвать калбек имея при себе ссылку на сам метод, а не объект+имя_метода, да и передавать просто ссылку на метод удобнее. thisArg будет полезен если используешь не метод(который привязан к конкретному экземпляру), а анонимные функции/замыкания.
Код AS3:
|
Код AS3:
Код AS3:
Добавлено через 1 минуту Очень нужная вещь была в ас2, когда пользовались делигатом . в ас3 особого смысла не представляет |
Цитата:
Код AS3:
ps: некогда придумывать еще какой-то пример |
СлаваRa я не говорю что этой методе нет применения, я лишь говорю, что ей почти не пользуются, примеров найти можно, но их оч мало
|
Цитата:
|
.call полезен.
|
и своей "практики" могу привести пример, где Function.call полезен.
Представьте себе что у вас есть метод который принимает строку формата "something with %var%, %var%" и неограниченное количество параметров для подставления вот в такие форматы "%var name%" и его сигнатура вот такая: function printf(str:String, ...args:Array):String и вот вам понадобилось этот самый метод завернуть в другой, например в нем вы описываете попытку взять эту саму str из xml. и этот метод для удобства имеет точно такую же сигнатуру: function getVarByParams(varname:String, ...params:Array):String только в его теле вы сталкиваетесь с тем, что передать ...params вы не можете просто передав как printf(var_from_xml, params); так как будет передан просто массив параметров первым элементом массива. В этом случае Function.call может оказаться спасительным printf.call(null, var_from_xml,params) вызовет метод именно так как вы этого и ожидали. |
ramshteks, всё круто, только это не про call.
|
| Часовой пояс GMT +4, время: 12:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.