您的位置:首页 > Web前端 > JavaScript

js将类数组转成数组

2016-04-06 15:59 435 查看
(1)方法1

直接循环arguments对象,赋值到新的数组中

var args = []; 

for (var i = 0, length = arguments.length; i < length; i++) { 

args.push(arguments[i]);
 }

(2)方法2:

Array.prototype.slice.call(arguments);        或者:

 [].slice.call(arguments);

注意:

NodeList(比如:document.getElementsByTagName("div"))在IE中就不能使用方法二将其转化为数组,因为在JavaScript中,一个Dom NodeList并非一个JavaScript对象,在IE中再使用var args = Array.prototype.slice.call(nodes, 0);就会抛错,这时就需要用最原始的办法解决(方法1或者方法3【容错】)
 

(2)方法3(容错)

 function nodeListToArray(nodes) {

 var arr; 

try {

 // 非IE支持

arr = [].slice.call(nodes); 

return arr; 

} catch (err) {  //支持IE

arr = []; 

for (var i = 0, length = nodes.length; i < length; i++) { 

arr.push(nodes[i]); 



return arr; 

} }

总结:

(1)NodeList不是数组
验证NodeList是不是数组,最直接的方法也许是试一下Array专有的push和pop方法。 

(2)JS的Object类的属性和方法

属性:

constructor:对创建对象的函数的引用(指针)。对于Object类,该指针指向原始的object()函数。

prototype:对该对象的对象原型的引用。对于所有的类,它默认返回Object对象的一个实例。

方法:

hasOwnProperty(property):判断对象是否有某个特定的属性。必须用字符串指定该属性(例如,o.hasOwnProperty(”name”))。

isPrototypeOf(object):判断该对象是否为另一个对象的原型。

propertyIsEnumerable(property):判断给定的属性是否可以用for…in语句进行枚举。

toString():返回对象的原始字符串表示。对于Object类,ECMA-262没有定义这个值,所以不同的ECMAScriipt实现具有不同的值。
valueOf():返回最适合该对象的原值。对于许多类,该方法返回的值都与toString()的返回值相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: