js中将类数组转换成数组

(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()的返回值相同。

 
  

你可能感兴趣的:(js,数组)