成为真正数组的条件是什么

时间:2014-03-24 15:00:33

标签: javascript arrays object

Javascript没有真正的数组。因为当我在谷歌控制台测试出这个东西时,我惊讶地发现对象和数组之间没有区别。

var obj = {};
var arr = [];

typeof obj; //object
typeof arr; //object

我很想知道

  

为什么会这样?

  

真的javascript拥有假数组吗?

  

这是typeof是错误的,我的意思是这样做不区分对象和数组吗?

  

成为真正阵列的条件是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

JavaScript是一种动态语言,其对象非常灵活。并且实际上没有保证,你拥有的对象是特定类型的。因为我们可以duck typing

如果您想知道某个对象是否为数组,您可以使用此

Object.prototype.toString.call(obj) == '[object Array]';

这取自underscore.js库的_.isArray函数。由于它很受欢迎并且被广泛使用,这种方法应该是可靠的。

如果您的环境支持ECMA 5.1,那么您也可以使用Array.isArray功能,如此

Array.isArray(obj);