Javascript没有真正的数组。因为当我在谷歌控制台测试出这个东西时,我惊讶地发现对象和数组之间没有区别。
var obj = {};
var arr = [];
typeof obj; //object
typeof arr; //object
我很想知道
为什么会这样?
和
真的javascript拥有假数组吗?
和
这是
typeof
是错误的,我的意思是这样做不区分对象和数组吗?
和
成为真正阵列的条件是什么?
谢谢!
答案 0 :(得分:2)
JavaScript是一种动态语言,其对象非常灵活。并且实际上没有保证,你拥有的对象是特定类型的。因为我们可以duck typing。
如果您想知道某个对象是否为数组,您可以使用此
Object.prototype.toString.call(obj) == '[object Array]';
这取自underscore.js库的_.isArray
函数。由于它很受欢迎并且被广泛使用,这种方法应该是可靠的。
如果您的环境支持ECMA 5.1,那么您也可以使用Array.isArray
功能,如此
Array.isArray(obj);