Это невозможно, как вы уже узнали из @Amy и @sumitani.Однако вы можете реализовать свой собственный объект или «контейнер массива» или оболочку массива по своему усмотрению.
Я привел здесь базовый пример:
var MyArray = function(){
var arr1 = [];
var arr2 = [];
this.push = function(element){
if(arr1.length < 4294967296){
arr1.push(element);
}else if(arr2.length < 8589934592){
arr2.push(element);
}else{
throw "Invalid array length";
}
}
this.get = function(index){
if(index <= 4294967296){
return arr1[index];
}else if(index <= 8589934592){
return arr2[Math.floor(index / 4294967296)];
}else{
throw "Invalid Index";
}
}
Object.defineProperty(this, 'length', {get: function() {
return arr1.length + arr2.length;
}});
};
var arr = new MyArray();
for(var i = 0; i < 8589934592; i++){
arr.push(i);
}
console.log(arr.get(5));
console.log(arr.length);
Так что в теории это возможноесть объект, который будет действовать как массив, который состоит из нескольких массивов, и вы просто «вычисляете» правильный индекс для правильного массива.
Я говорю теоретически, потому что этот метод не будет работать на стороне клиента, как большинство браузеров.окна / вкладки ограничены определенной памятью в МБ / ГБ, такой как chrome и firefox.
Однако в Firefox ограничение больше, и именно здесь я провел свой тест.
Причина, по которой я даю этот ответ, заключается в том, что OP не имеет смысла хранить такой объем данных на клиенте (я предполагаю, что он только на стороне клиента), и это может быть полезно длягибридные приложения (возможно).
Этот метод можно легко расширить, чтобы использовать больше места (и памяти).Возможно, есть лучшие способы сделать это, но это мои быстрые и грязные 2 цента.