[]args.slice is not a function

已邀请:

cuixueying

赞同来自:

   使用args特殊须知在AS3中args有array所有的属性和方法,翻译成js后,默认会当成js里arguments对象来处理。而arguments是一个类似数组但不是数组的对象(说它类似数组是因为支持通过数组下标或length的属性获取对象的信息(arguments[i]/arguments.length),说他不是数组的对象是因为他不支持数组那些深度操作的特殊方法,比如slice、concat等)。所以在AS3里你有用到args类似数组的特殊方法,须要手动把args的参数类型改成Array。 原生例子:
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: undefined is not a function)
trace(arr2.toString());
}
兼容H5写法:
public function funArgs(...args:Array):void{
var arr2:Array = args.slice();
trace(arr2.toString());
}

特殊情况:如果args不是唯一的参数,工具会自动识别。 
原生例子:
public function funArgs2(arr:Array, ...args):void
{
var arr3:Array = args.slice();
trace(arr3.toString());
}

 

要回复问题请先

商务合作
商务合作