Возможный дубликат:
Существуют ли константы в Javascript?
Есть ли способ объявить статическое значение final в javascript, чтобы оно не могло быть изменено третьей стороной?
У меня есть приложение для обмена статьями, где бесплатные пользователи поддерживают рекламу. Что я хочу сделать, так это запретить свободным пользователям изменять содержимое innerHTML путем изменения переменной хранения для содержимого.
На данный момент у меня есть таймер, который перезагружает innerHTML статьи на веб-сайте пользователя каждые 5 секунд, и я сохраняю значение для перезагрузки в переменной.
Однако, если гений, использующий jsbeatify, исследует, какая переменная содержит ключ к удалению рекламы, и изменит ее, мы потеряем доход и доступ к нашим продуктам.
Как предотвратить изменение внутренней переменной?
ОБНОВИТЬ
Это конечный результат того, что я придумал:
<div id="specialdiv"></div>
<input type="button" value="try to change the function i to do something different" onclick="t.i = function(){alert(data.secret);}"><BR>
<input type="button" value="set function to null out of spite" onclick="t=null;">
<script type="text/javascript">
e = function(){var data = { };
Object.defineProperty(data, 'secret', {
value: "Hello world!",
writable : false,
enumerable : true,
configurable : false
});this.z=function(){window.setTimeout("try{document.getElementById('specialdiv').innerHTML = '"+data.secret+"';t.i.z();}catch(err) {document.body.innerHTML=err;}",5000);}}
g = function(){};
g.prototype = new e();e=null;window.t = {}
Object.defineProperty(window.t, 'i', {
value: new g(),
writable : false,
enumerable : false,
configurable : false });g = null;
window.t = Object.freeze(window.t); t = Object.seal(window.t);
t.i.z();
</script>
Он будет представлен в упакованном формате, чтобы было сложнее просто скопировать код из источника. Таким образом, усилия по простому копированию и вставке кода будут максимальными, и их будет очень сложно автоматизировать.
Спасибо всем за ответы.