
01.07.2012, 13:48
|
|
Регистрация: Jul 2007
Сообщений: 805
|
и своей "практики" могу привести пример, где 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)
вызовет метод именно так как вы этого и ожидали.
|