Javascript中类似数组的对象

var obj={};
obj.prototype={
length:0,
splice:[].splice
}
console.log(obj.prototype);//[]
console.log(Object.prototype.toString.call(obj.prototype));//[[object Object]]
【例子来源:http://www.clovery.org/question-the-object-similar-array-in-js.html】
obj.prototype带有数组的一些属性,但用toString调用的时候,返回的又是一个对象。这就是javascript中的Array like Object。

一个类数组对象必须有两个属性,即length和splice,这样才能模拟数组的特性。

函数的arguments也是类数组对象。

var test=function(){
console.log(arguments);
console.log(arguments.length);
console.log(arguments.constructor);
}
test();//依次输出 [] 0 function Object() { [native code] }

不仅限于arguments, 许多DOM对象返回了类数组对象而不是数组。

使用下面方式可以使类似数组的对象转变为数组:

var $A = function(obj) {
return Array.prototype.slice.call(obj);
};

jQuery对象也是类数组对象,封装后的DOM不能用javascript原生的dom方法。

参考:http://shifteleven.com/articles/2007/06/28/array-like-objects-in-javascript

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>