您的位置:首页 > 其它

Prototype 学习——工具函数学习($A方法)

2009-07-11 20:13 537 查看
$A方法:

Accepts an array-like collection (anything with numeric indices) and returns its equivalent as an actual
Array
object. This method is a convenience alias of
Array.from
, but is the preferred way of casting to an
Array
.


function $A(iterable) {
if (!iterable) return [];
if ('toArray' in Object(iterable)) return iterable.toArray();
var length = iterable.length || 0, results = new Array(length);
while (length--) results[length] = iterable[length];
return results;
}


如果传进来的参数为null,
undefined
and
false
则直接返回空数组

如果传进来的参数对象里有toArray方法,这直接调用参数的toArray方法,因为有许多Prototype对象里面已经定义好了toArray方法,所以可以直接调用toArray方法

例如:

var array={
toArray : function(){
return [1,2,3];
}
}

//1,2,3
alert($A(array));


接下来根据参数的length建立新数组,然后逐个把参数中的元素复制到新数组中去,最后返回新数组对象

下面给出prototype帮助文档的一段说明和例子也许更能说明这个函数的作用:

/*The well-known DOM method document.getElementsByTagName() doesn't return an Array, but a NodeList object that implements the basic array "interface." Internet Explorer does not allow us to extend Enumerable onto NodeList.prototype, so instead we cast the returned NodeList to an Array:*/

var paras = $A(document.getElementsByTagName('p'));
paras.each(Element.hide);
$(paras.last()).show();


还有一点:

Array.from = $A;

数组对象的from静态方法和$A是一个方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: