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

A

Andreas M.

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.
 
G

Gordon

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.

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 ());
 
J

Jorge

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.

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top