繁体   English   中英

Javascript数组任意索引内存分配

[英]Javascript Array Arbitrary Index Memory Allocation

是声明一个数组并初始化一些任意索引以分配内存中的所有数组元素,甚至是未定义的数组元素?

例:

var users = [];

function addUser(userID, name, address) {
   if (typeof (users[userID]) === 'undefined')
       users[userID] = new User(userID, name, address)
}

function User (userID, name, address) {
    this.userID = userID;
    this.name = name;
    this.address = address;
}

$(function () {
   addUser(63, 'John', 'VA');
   addUser(5, 'Kate', 'NY');
   addUser(895, 'Yaz', 'DC');
});

因此,在以上示例中,浏览器将在内存中分配896个User实例(仅定义3个)还是仅分配3个?

谢谢,

JavaScript不在乎您放入数组中的内容,也不会使用您未提供的值自动填充它。

如果将3个用户添加到阵列,则内存中将只有3个用户。

差距中的指数将是undefined


var x = [];
// undefined

x[0] = "user1";
// 'user1'

x[3] = "user2";
// 'user2'

x[10] = "user3";
// 'user3'

x;
// ['user1',,,'user2',,,,,,,'user3']

综上所述,您最好使用Object{}

var users = {};

function addUser(userID, name, address) {
  if (!(userID in users)) {
    users[userID] = new User(userID, name, address)
  }
}

您将拥有一个看起来像这样的对象

{"63": [object User], "5": [object User], "895": [object User]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM