Hi group,
I want to have some advice about immutable objects.
I made a constructor.
function Point(x, y) {
this.x = x;
this.y = y;
}
This is a very simple one and now I want to make it immutable so that
once an object is created it cannot be modified.
I came up with 2 ways.
[1]
function Point(x, y) {
this.x = function() { return x; }
this.y = function() { return y; }
}
[2]
function Point(x, y) {
this.getX = function() { return x; }
this.getY = function() { return y; }
}
They are both immutable.
You can read x and y but cannot change them.
[1] is short and easy to use but sometimes likely to be error-prone
like
var p = new Point(2, 3);
var x = p.x; //should be p.x() instead of p.x
[2] is straight-forward but looks verbose.
I have to access the data like p.getX() .
Which way is more recommendable?
And is there a better way to make an immutable object?
Thanks in advance.
Sam
I want to have some advice about immutable objects.
I made a constructor.
function Point(x, y) {
this.x = x;
this.y = y;
}
This is a very simple one and now I want to make it immutable so that
once an object is created it cannot be modified.
I came up with 2 ways.
[1]
function Point(x, y) {
this.x = function() { return x; }
this.y = function() { return y; }
}
[2]
function Point(x, y) {
this.getX = function() { return x; }
this.getY = function() { return y; }
}
They are both immutable.
You can read x and y but cannot change them.
[1] is short and easy to use but sometimes likely to be error-prone
like
var p = new Point(2, 3);
var x = p.x; //should be p.x() instead of p.x
[2] is straight-forward but looks verbose.
I have to access the data like p.getX() .
Which way is more recommendable?
And is there a better way to make an immutable object?
Thanks in advance.
Sam
Comment