У меня есть простой объект с двумя свойствами, одной строкой и одним массивом.Когда я создаю несколько переменных, каждая из которых является новым экземпляром моего объекта, используя Object.create, все мои переменные имеют свои собственные строковые свойства, но все они совместно используют один и тот же массив!Если вы запустите приведенный ниже код шаг за шагом, то при каждом воздействии на массив вы увидите, что все массивы предыдущей переменной также редактируются !!!(но свойство строки в порядке).Действительно, мы можем видеть, что массивы во всех переменных на самом деле являются одним и тем же массивом благодаря ObjectId отладчика ... Знаете ли вы, как сделать каждый массив специфичным для каждой переменной и не иметь всех переменных, совместно использующих один и тот же объект??
function myFunction() {
// Object definition
var my_object = Object.create(null, {
my_object_name: {value: new String(), enumerable: true, writable: true},
my_object_array: {value: new Array(), enumerable: true, writable: true},
build: {
value: function (i) {
this.my_object_name = "name_" + i.toString();
for (var j = 0; j <= 4; j++) {
this.my_object_array[j] = i + j;
}
return this;
}
}
});
// Main
var my_variable_1 = Object.create(my_object).build(1);
var my_variable_2 = Object.create(my_object).build(5);
var my_variable_3 = Object.create(my_object).build(10);
}
В конце мы получим приведенный ниже результат со всеми различными строками для свойства my_object_name
, но с одинаковыми массивами для свойства my_object_array
my_variable_1.name = "name_1" / my_variable_1.array = [10, 11, 12, 13, 14]
my_variable_2.name = "name_2" / my_variable_1.array = [10, 11, 12, 13, 14]
my_variable_3.name = "name_3" / my_variable_1.array = [10, 11, 12, 13, 14]
Но я бы хотел найти:
my_variable_1.name = "name_1" / my_variable_1.array = [ 1, 2, 3, 4, 5]
my_variable_2.name = "name_2" / my_variable_1.array = [ 5, 6, 7, 8, 9]
my_variable_3.name = "name_3" / my_variable_1.array = [10, 11, 12, 13, 14]