Jak zapobiec zmianie wartości zmiennej w Javascript [duplikat]
Możliwy duplikat:
Czy w Javascript są stałe?
Czy istnieje sposób zadeklarowania statycznej wartości końcowej w javascript, aby nie mogła zostać zmieniona przez stronę trzecią?
Mam aplikację do udostępniania artykułów, w której bezpłatni użytkownicy są obsługiwani. To, co chcę zrobić, to uniemożliwić darmowym użytkownikom zmienianie zawartości innerHTML, zmieniając zmienną pamięci dla treści.
W tym momencie mam zegar, który co 5 sekund ładuje innerHTML artykułu na stronie użytkownika i zapisuję wartość do ponownego załadowania w zmiennej.
Jeśli jednak geniusz używający jsbeatify bada, która zmienna ma klucz do usunięcia reklamy i zmienia to, tracimy przychody i ekspozycję naszych produktów.
Jak zapobiec zmianie zmiennej wewnętrznej?
AKTUALIZACJATo jest końcowy rezultat tego, co wymyśliłem:
<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>
Zostanie on zaprezentowany w spakowanym formacie, aby utrudnić kopiowanie kodu ze źródła. W ten sposób wysiłek polegający na prostym skopiowaniu i wklejeniu kodu zostanie zmaksymalizowany i będzie bardzo trudny do zautomatyzowania.
Dziękuję wszystkim za odpowiedzi.