1

我一直在用 Javascript 阅读:

  • 一切都是对象(除了数字、字符串、布尔值、空值和未定义等基本类型)
  • 对象可以被视为关联数组

从我的结论来看, Array.isArray() 应该为所有内容返回 true(上述原始异常除外)。我理解错了什么?

谢谢 !

4

2 回答 2

2

对象和数组是有区别的。Array实际上是一个Array Object。它具有与其他对象不同的方法。String 是一个 String对象。但是,您可以像访问数组一样访问对象。取以下对象

var obj = {
    value1: 'Some Value',
    value2: 'Some Other Value'
    };

你可以得到像

obj['value1'];
obj['value2'];

这并不意味着它是一个Array Object,它只是有不同的访问方式

isArray() 检查对象是否为Array Object,而不是您是否可以数组一样访问它

于 2012-08-22T05:29:40.383 回答
1

数组(javascript 中的 [[Class]] 类型)与关联数组(抽象数据类型)不同,Array.isArray检查对象是否为普通数组,如({}).toString.call( obj ) === "[object Array]".

  1. 如果 Type(arg) 不是 Object,则返回 false。
  2. 如果 arg 的 [[Class]] 内部属性的值为“Array”,则返回 true。
  3. 返回假。
于 2012-08-22T05:29:52.423 回答