Ответ 1
Реально... не переписывая его. Вы всегда можете контролировать доступ, обернув его в объект, который предлагает только GetObj без SetObj, но, конечно же, оболочка в равной степени может перезаписывать, а также ее свойства "private", которые будут "скрыты" с помощью метода GetObj.
Собственно, вопрос - обман:
Могут ли свойства, доступные только для чтения, в Pure JavaScript?
EDIT:
После чтения http://javascript.crockford.com/private.html, можно использовать закрытие для создания ссылок на переменные, которые действительно недоступны из внешнего мира. Например:
function objectHider(obj)
{
this.getObject=function(){return obj;}
}
var someData={apples:5,oranges:4}
var hider=new objectHider(someData);
//... hider.getObject()
где ссылка на obj в объектеHider не может быть изменена после создания объекта.
Я пытаюсь придумать практическое применение для этого.