在 ES5 中,新增了几种方式可以用来进行数组的判断,它们是 Object.prototype.isPrototypeOf 、 Array.isArray 和 Object.getPrototypeOf 。
很遗憾,对于任何引用类型的数据(包括 null ), typeof 统一返回 Object 字符串,所以不能用它来判断 JS 中的数组。
于是可以通过 instanceof 检测数据的原型链中是否存在 Array 构造函数来判断数据是否是数组。
对象实例有一个 constructor 属性, constructor 指向对象实例的构造函数。于是,我们可以通过判断数据的 constructor 是否为 Array 构造函数即可。
要注意: constructor 是可以被修改的,所以这种判断方式不可靠。
toString 可以用于检测对象的类型,它返回一个字符串。为了每个对象都能通过 Object.prototype.toString 来判断,需要借助函数的 call 或者 apply 方法。
这个方法没什么好说的,直接调用即可,会返回一个布尔值。
根据 ES5 新增的这个方法,我们可以把数组的原型对象与需要判断对象的原型进行比较,如果两者是全等关系,那么可以认为它是数组。
借用 ES5 新增的 isPrototypeOf 方法,可以直接了当的通过 Array 调用来判断目标数据是否是数组类型。
ES5 新增的两种方法都与原型链有关,理解并掌握原型相关内容还是判断数组的关键。方便理解与记忆的话,可以把 isArray 和 isPrototypeOf 放在一起,他们返回的都是布尔值,并且用途也相似。
getPrototypeOf 方法则是用来找到被检测数据的原型,拿到原型后还要与 Array.prototype 进行比较。
你是想列举一下看看:数组有length属性(取长度),toString()方法(转换为字符串),join()方法(用指定字符连接数组元素)
其他还有:
•栈方法 push( ) pop( )
•队列方法 shift( ) unshift( )
•排序方法 reverse( )sort( )
•操作方法 concat( ) slice( ) splice( )
•位置方法 indexOf( ) lastIndexOf( )
•迭代方法 every( ) filter( ) forEach( ) map( ) some( )
•归并方法 reduce() reduceRight( )
你可以看一看这本书《JavaScript高级程序设计(第3版)》,介绍的比较系统,不要被名字吓到,其实是针对初学者。
或者你看看百度文库的这篇:
http://wenku.baidu.com/view/b9ca918884868762caaed5b1.html
用prototype.js提供新功能:eg: 数组新增方法:
var a = new Array[1,2,3]
a.each(function(v){ //遍历数组,然后依次取值并执行相应的操作
alert(v)
})
${ResultManaged.showResult}.each(function(res){
newRow.insertCell().innerHTML = res
})
你这里在JS中使用了"${}"我真的不敢保证你能取到相应的值......