Перечисления имеют свою собственную метамодель . Вы можете объявить новые перечисления с новым поведением, используя его. Это немного сложно, но это определенно создаст что-то, что установлено в той лексической области, которую вы хотите.
Не делайте это Массивом, если это не Массив, сделайте это объектом:
var saveData = {};
saveData.a = 2;
saveData.c = 1;
// equivalent to...
var saveData = {a: 2, c: 1}
// equivalent to....
var saveData = {};
saveData['a'] = 2;
saveData['c'] = 1;
При выполнении его способ, которым Вы делаете его с Массивами, просто использует в своих интересах обработку JavaScript Массивов и не действительно правильного способа сделать его.
Можно выполнить итерации пар ключ/значение объекта saveData создать массив пар, затем использовать соединение (" и ") на полученном массиве:
var a = [];
for (key in saveData) {
a.push(key+"="+saveData[key]);
}
var serialized = a.join("&") // a=2&c=1