Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.12.2010, 22:05
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 1  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
По умолчанию Function#apply, Function#call

Добрый день, я просто уточнить.
Во первых, вся разница между call и apply заключается только в передаче массива или неограниченного числа параметров (т.е. в задании argArray)?
Во вторых, в случае применения call или apply к методу имеет ли вообще какой-нибудь смысл первый аргумент — thisArg? (объект, к которому применяется данный метод).

Спасибо.

Старый 11.12.2010, 22:59
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 2  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
thisArg - это тот объект, который будет подставляться вместо this внутри вызываемой функции,
так что смысл он имеет, да.

Старый 11.12.2010, 23:02
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Ну я написал "методов". Про функции я вкурсе )
Для методов имеет смысл?

Старый 11.12.2010, 23:04
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 4  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Похоже, что нет (а ведь это та самая дока =))

Старый 11.12.2010, 23:19
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Да, тоже читал. Просто смущает что функции оставили просто ради старпёров по большей части (ну или чтобы экма следовать, не знаю тут) сделав почти бесполезный параметр. Главное всегда уточнять )

А что с вторыми и далее аргументами про разницу между call и apply? Я всё верно понимаю?

P.S. надо бы с тобой уыпить как нибудь, земляк всё же)

Старый 12.12.2010, 01:07
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Про thisObject в вызовах методов вполне однозначно расписано в доках. Метод всегда привязан с своему классу. Можно конечно и извратиться:
Код AS3:
public var fakeMethod:Function = function(param:Number)(trace(param)};
Получится "как бы метод" без привязки к классу.
Цитата:
А что с вторыми и далее аргументами про разницу между call и apply? Я всё верно понимаю?
Верно. В apply передается массив, в call параметры.

Старый 12.12.2010, 03:20
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 7  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
http://www.flasher.ru/forum/showthread.php?t=147231 в этой ветке я поднимал похожий вопрос, может найжешь там что полезное. Похоже в случае метода thisarg просто игнорится.

Старый 12.12.2010, 14:08
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
Получится "как бы метод" без привязки к классу.
Получится как бы функция в публичном поле.
Цитата:
call () метод
AS3 function call(thisObject:Object, parameter1:String = null):void

Язык версии : ActionScript 3.0
Версии среды выполнения: 1.0 9

Вызывает функцию, представленную объектом Function. Каждая функция в ActionScript представлена объектом Function, и все функции поддерживают этот метод.

Почти всегда вместо этого метода можно прибегнуть к оператору вызова функции (()). Оператор вызова функции создает краткий и легко читаемый код. Этот метод полезен, в основном, тогда, когда параметр thisObject вызова функции необходимо контролировать явным образом. Обычно если функция вызывается как метод объекта, находящегося в теле функции, параметру thisObject присваивается значение myObject, как показано в следующем примере:

myObject.myMethod(1, 2, 3);


В некоторых ситуациях может потребоваться, чтобы thisObject указывал на другой объект (например, если функцию необходимо вызвать как метод объекта, но на самом деле она не сохраняется как метод этого объекта):

myObject.myMethod.call(myOtherObject, 1, 2, 3);


Чтобы вызвать функцию в качестве регулярной функции, а не метода объекта, можно присвоить значение null параметру thisObject. Например, эквивалентны следующие вызовы функции:

Math.sin(Math.PI / 4)
Math.sin.call(null, Math.PI / 4)


Возвращает значение, которое вызванная функция указывает в качестве возвращаемого значения.

Параметры
thisObject:Object — Объект, указывающий значение thisObject в теле функции.

parameter1:String (default = null) — Параметр, передаваемый функции. Можно указать 0 или несколько параметров.
Мне вот неоднозначно. Имеет ли смысловую нагрузку thisArg в случае методов? Во всех источниках нигде четко не написано - "да знаете, нагрузки не несёт, для методов смысла не имеет". И мне всё таки интересно знать - это что то вроде willTrigger`а в EventDispatcher или я что-то не понимаю.

Старый 12.12.2010, 14:52
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 9  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
http://jacksondunstan.com/articles/912

Старый 12.12.2010, 14:54
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Получится как бы функция в публичном поле.
Поэтому я и написал в кавычках.
Цитата:
Мне вот неоднозначно. Имеет ли смысловую нагрузку thisArg в случае методов?
В доках прямо написано:
Цитата:
В рамках связанного метода ключевое слово this указывает на исходный объект, реализовавший этот метод.
Что здесь неоднозначного?

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.