The Science of Programming/SwayPresentations/Objects/PublicAndPrivateComponents2
Public and Private Components
We overload assignment so that only variables can appear on the left hand side of the assignment operator.
function =($a,b) { var assign = shadowed(:=); if (type($a . code) != :VARIABLE) { throw(:restrictedAssignment, "you are only allowed to assign to simple variables"); } $a assign b; }
So, anything like:
x . a = 3;
throws an exception.
Since setters can access the variables directly, they are not affected by this change.