Question about objects in Class contructors

First, when you do this:

class Test {
  constructor(data) { = data; // [*]

Doing = data; does not make a copy of data.

So, later, as you are using...

const initialData = { bar: [] };

...the same initialData object on both instantiations:

const a = new Test(initialData);

const b = new Test(initialData);

...then both a and b are referencing the same object. So, naturally, when either of a or b modifies that object, it affects both.

This is how the language works and it's not really even related to classes or constructors or anything. Consider:

const data = { bar: [] };

const a = data;
const b = data;;


const data = { bar: [] };

const a = {
    foo: 'baz',
    data: data
const b = {
    foo: 'baz',
    ble: data
}; = 'meh';;

When I make the assignment a = data or when I do b = { /* ... */ ble: data }, it's never making a copy of data.

If you need to have your own copy of something, you'll need to actually make a copy of it.

/r/javascript Thread