一尘不染

Javascript数组是原语吗?

javascript

数组仅仅是伪装的对象吗?为什么/为什么不呢?它们以什么方式(这样/不是)?

我一直认为JS中的数组和对象本质上是相同的,主要是因为访问它们是相同的。

var obj = {'I': 'me'};
var arr = new Array();
arr['you'] = 'them';

console.log(obj.I);
console.log(arr.you);
console.log(obj['I']);
console.log(arr['you']);

我误导/误会/错误吗?关于JS文字,原语和字符串/对象/数组/等等,我需要了解什么?

数组/对象仅仅是变相的字符串吗?为什么/为什么不呢?它们以什么方式(这样/不是)?


阅读 244

收藏
2020-05-01

共1个答案

一尘不染

数组是对象。

但是,与常规对象不同,数组具有某些特殊功能。

  1. 数组在其原型链中还有一个附加对象,即Array.prototype。该对象包含可以在数组实例上调用的所谓Array方法。

  2. 数组具有一个length属性(该属性是实时的,ergo,它会自动更新)(

  3. 数组具有用于定义新属性的特殊算法。如果你设置一个新的属性到一个数组和属性的名称是可以强制转换为一个整数刺(如'1''2''3',等),那么特殊算法应用(它是在规范中定义第123页)

除了这三件事,数组就像常规对象一样。

2020-05-01