声明一个数组并初始化一些任意索引分配内存中的所有数组元素,即使是未定义的数组元素?
示例:
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个?
谢谢,
答案 0 :(得分:1)
<强>都能跟得上强>
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]}