Показать сообщение отдельно
Старый 01.07.2012, 13:48
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 9  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
и своей "практики" могу привести пример, где 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)

вызовет метод именно так как вы этого и ожидали.