Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How can I set an object's property read-only to public?

0 views
Skip to first unread message

Andreas M.

unread,
May 9, 2008, 4:02:27 AM5/9/08
to
I have an object, that contains a status-property. The status gets set
by a function internal to that object. This function gets invoked as
/init();/ and sets the status-property of the outer function.

If I make that property world-readable via /this/ it will become
world-writable, too. Is there any way except of defining a getter
function to an inner property? I would like to get the property via
/Object.property/ still.

--
Bye,
Andreas M.

Gordon

unread,
May 9, 2008, 4:40:58 AM5/9/08
to

Make it a private property and use a getter.

For example:

function myClass ()
{
this.public = 0; // This property is fully accessible from the
outside
var private = 1; // This property is inaccessible from outside the
object

this.getPrivate = function ()
{
return (private);
}
}

myObj = new myClass ();

alert (myObj.getPrivate ());

Jorge

unread,
May 9, 2008, 4:48:58 AM5/9/08
to

No. There isn't.
Any (non-native) Object.property is writable as long as it's visible.
Reducing the visibility of the status-property (hiding it into a
closure) would protect it, but its getter() would still be r/w anyway,
it could be hijacked to return something != status-property. Viva the
mutability.

--Jorge.

0 new messages