首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -数组是如何在内部存储的?

Javascript -数组是如何在内部存储的?
EN

Stack Overflow用户
提问于 2015-01-10 03:19:40
回答 2查看 456关注 0票数 2

在fiddle - http://jsfiddle.net/vwwkf18c/或以下代码片段中-

代码语言:javascript
复制
var a = [3, 4];
var b = [6, 2];
var c = $.extend({}, a, b);
alert(c[1]); //alerts 2
alert(a); //alerts array a contents
alert(c); //does not return contents of c

我的问题- 1)在发出警报后,我们可以推断"c“是一个对象,而不是一个数组对象。请确认。2)其次,有人说数组的内部表示是一个对象字面,对吗?这意味着数组"a“将按如下方式存储-

代码语言:javascript
复制
var a = {
0: 3,
1: 4
}

它是正确的吗? 3) a或b是如何在内部存储的,它与"c“的内部表示有什么不同?

EN

回答 2

Stack Overflow用户

发布于 2015-01-10 03:24:57

  1. 请参阅the docs:"Returns: Object"
  2. No.对象文字是用于创建对象的一段JavaScript语法。数组是从基本对象继承(沿着原型链)的对象类型。数组类型具有与基本对象不同的toString方法,这就是alert产生不同结果的原因。
  3. 是特定于实现的(并且对于编写JavaScript而不是JavaScript运行时的任何人来说也不重要)
票数 1
EN

Stack Overflow用户

发布于 2016-02-14 09:12:58

  1. 是的,c是一个对象,但不是一个数组。
  2. a的内部表示(它是一个数组)除了具有'0‘和’1‘属性外,还具有名为'length’的属性
  3. c具有属性'0‘和'1',但没有属性'length'

查看this jsfiddle

代码语言:javascript
复制
var a = [3, 4];

var b = [6, 2];

var c = $.extend({}, a, b);

alert(c[1]); //alerts 2
alert(a); //alerts array a contents
alert(Object.getOwnPropertyNames(c)); //does not return contents of c
alert(Object.getOwnPropertyNames(a));

希望能对你有所帮助

Vikram

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27867658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档