То, что вы пытаетесь достичь, возможно:
function OBJ() {
this.id = 0;
this.arr = [0,0];
}
let obj1 = new OBJ();
let obj2 = new OBJ();
потому что он создает отдельный экземпляр для каждого нового созданного объекта, т. Е. Каждый новый созданный объект имеет свою собственную копию id и arr.
Ваш подход будет хорошо работать для примитивных типов данных, но не для непримитивных типов данных, таких как Array. Вы создаете экземпляр массива в прототипе, не понимая, что изменение этого массива изменит его для всех экземпляров.
obj1 и obj2 изначально имеют ссылку на тот же id и arr прототипа OBJ.
obj1 / obj2 имеет свою собственную новую копию id только при изменении obj1.id / obj2.id , в противном случае они ссылаются на одно и то же id из Прототип OBJ .
Теперь, это поведение только для примитивных типов.
С не примитивными типами, т.е. массивом, и obj1 и obj2 всегда ссылаются на один и тот же arr прототипа OBJ.