Вы можете сделать это, предоставив функцию-конструктор и добавив к его прототипу.
function MyObject(value) {
value = value || 0;
this[1] = value;
this[2] = value;
this[3] = value;
this[4] = value;
}
MyObject.prototype.reset = function (value) {
value = value || 0;
for (var key in this) {
if (this.hasOwnProperty(key)) {
this[key] = value;
}
}
};
var o = new MyObject();
o['1'] = 42;
o.reset();
console.log();
// {1:0,2:0,3:0}
Если вы хотите сделать массив произвольной длины и инициализировать все значения до 0. Это можно сделать.
function initArray(size, value) {
value = value || 0;
return Array.apply(0, Array(size)).map(function() {return value;});
}
var a = initArray(10);
console.log(a);
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
var b = initArray(10, 1);
console.log(b);
// [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Если вы хотите сбросить все значения массива, это можно сделать. Однако не рекомендуется изменять встроенные прототипы JavaScript.
Array.prototype._reset = function (value) {
value = value || 0;
for (var i = 0; i < this.length; i += 1) {
this[i] = value;
}
};
b._reset();
console.log(b);
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Похоже, вы захотите использовать массив, а не объект здесь ... – tkone
Но да, вы можете просто петли. 'Object.forEach' или даже простой цикл' for' может это сделать. – tkone
Я программирую в Javascript с 2009 года, и я никогда не видел никакого способа сделать это без цикла ... –