Arrayのソースを読む

tamarin-central/core/Array.as

// ECMA 15.4.2.2
public function Array(...args)
{
	var n:uint = args.length
	if (n == 1 && (args[0] is Number))
	{
		var dlen:Number = args[0];
		var ulen:uint = dlen
		if (ulen != dlen)
			Error.throwError( RangeError, 1005 /*kArrayIndexNotIntegerError*/, dlen );
		length = ulen;
	}
	else
	{
	// FIXME why not just return args?
		length = n
		for (var i:uint=0; i < n; i++)
			this[i] = args[i]
	}
}

ちょっ、ArrayクラスのコンストラクタにFIXMEとか書いてある!しかも「なんで単にargsを返さないの?」だって?!new Array(xs)で作ったArrayに破壊的な操作をしたときに、xsにまで影響が及んだら困るからでは???