Как предотвратить изменение значения переменной в Javascript [duplicate]
Возможный дубликат:
Есть ли константы в Javascript?
Есть ли способ объявить статическое окончательное значение в 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>
Это будет представлено в упакованном формате, просто чтобы было сложнее просто скопировать код из исходного кода. Таким образом, усилия по простому копированию и вставке кода будут максимизированы, и их будет очень сложно автоматизировать.
Спасибо всем за ваши ответы.