[i]private var arr:Array = [1,2,3,4,5,6];
public function ArgsDemo() {
funArgs(arr);
}
public function funArgs(...args):void
{
var arr2:Array = args.slice();
//(翻译成JS后会报错提示:Uncaught TypeError: args.slice is not a function)
trace(arr2.toString());
}[/i]
兼容H5写法:
[i]public function funArgs(...args:Array):void
{
var arr2:Array = args.slice();
trace(arr2.toString());
} [/i]
特殊情况:
如果args不是唯一的参数,工具会自动识别。 原生例子:
[i]public function funArgs2(arr:Array, ...args):void
{
var arr3:Array = args.slice();
trace(arr3.toString());
} [/i]
1 个回复
cuixueying
赞同来自:
在AS3中args有array所有的属性和方法,翻译成js后,默认会当成js里arguments对象来处理。而arguments是一个类似数组但不是数组的对象(说它类似数组是因为支持通过数组下标或length的属性获取对象的信息(arguments/arguments.length),说他不是数组的对象是因为他不支持数组那些深度操作的特殊方法,比如slice、concat等)。所以在AS3里你有用到args类似数组的特殊方法,须要手动把args的参数类型改成Array。
原生例子:
兼容H5写法:
特殊情况:
如果args不是唯一的参数,工具会自动识别。
原生例子: