据我所知,有三种方法可以找出对象是否是一个数组
按isArray功能实施
Array.isArray()
Run Code Online (Sandbox Code Playgroud)
通过 toString
Object.prototype.toString.apply( obj ) === "[object Array]"
Run Code Online (Sandbox Code Playgroud)
并通过 instanceof
obj instanceof Array
Run Code Online (Sandbox Code Playgroud)
有没有理由选择一个而不是另一个?
最好的方法是使用标准Array.isArray(),如果它是由引擎实现的:
isArray = Array.isArray(myObject)
Run Code Online (Sandbox Code Playgroud)
MDN建议toString()在Array.isArray未实现时使用该方法:
兼容性
在任何其他代码之前运行以下代码将创建Array.isArray(如果它本身不可用).这依赖于Object.prototype.toString不变,并调用解析为本机Function.prototype.call方法.
Run Code Online (Sandbox Code Playgroud)if(!Array.isArray) { Array.isArray = function (arg) { return Object.prototype.toString.call(arg) == '[object Array]'; }; }
jQuery和underscore.js [source]都采用了这种toString() === "[object Array]"方式.
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |