如何防止变量值的变化在Javascript [复制](How to prevent the chan

2019-08-01 21:24发布

可能重复:
有没有在Javascript常数?

是否有申报在javascript终值的静态的,所以它不能由第三方来改变的呢?

我已经是一个文章共享应用,以免费用户被广告支持。 我希望做的是防止免费用户通过改变存储变量的内容改变innerHTML的内容。

我必须在这一刻重新加载文章的innerHTML上每5秒用户网站上的计时器,我存储在一个变量重载值。

但是,如果一个天才使用jsbeatify哪个变量是关键,以去除广告和改变的是,我们失去了我们的产品的收入和曝光探讨。

如何防止内部变量的改变?


UPDATE

这是什么,我想出了最终结果:

http://jsfiddle.net/PgdYP/1/

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

这将打包格式呈现,只是为了使它更难只是将代码复制出来的来源。 这样简单地复制和粘贴代码出来的努力将被最大化,将是非常难以实现自动化。

谢谢大家的答案。

Answer 1:

就在这里。 至少对于对象的属性 ,ES5给我们的方法可行手工更改属性描述符标志。 因此,我们可以这样做

var data = { };

Object.defineProperty(data, 'secret', {
    value: 42,
    writable : false,
    enumerable : true,
    configurable : false
});

通过这种方式,我们创建了一个财产secret与值42data ,从而无法得到modfied也不能删除。

这里需要说明的是, 天才 (比如你叫吧)也将能够发现这段代码,只是修改,又可以,如果他想改变的内容。 你不能创建一个安全的前端JavaScript的那样。 该代码将总是可以通过纯文本的每一个人。


为了使这个更完整的,你也可以创建一个对象,并freeze在某个时候,使用Object.freeze()和/或Object.seal()关机枚举删除修改的对象的属性选项。

但同样谨慎的话 :这是为了影响自己的代码或外部代码,以防止修改由事故或在运行时的目的。 有没有办法阻止开发者,因为他可以简单地阻止脚本的执行,在此之前甚至可以生效。



Answer 2:

尝试常量关键字。 它应该创建一个不可变的变量。



文章来源: How to prevent the changing of a variable value in Javascript [duplicate]