避免无意中编辑变量?

时间:2016-05-29 23:45:47

标签: javascript

我正在制作游戏,因此我有一些变数,我希望人们无法看到或搞乱。

现在我可以进入开发者控制台,只需输入

即可
myVariable = 9999

它已经改变了。

我正在尝试做大多数服务器端,只是在客户端显示数据,但我仍然需要一些关键变量。

那么处理其他人干涉我代码的一些好方法是什么?

2 个答案:

答案 0 :(得分:2)

简短回答:

你不能这样做!

长答案:

您可以执行不同的操作以防止变量可编辑。例如,在strict mode中,您可以使用const关键字创建不可变变量。

您还可以使用Object.defineProperty定义不可变属性:

var obj = {};
Object.defineProperty(obj, 'immutable', {writable: false, value: 12});
obj.immutable; //12
obj.immutable = 13;
obj.immutable; //12

但是你永远做的就是阻止用户改变浏览器的这种行为。在大多数情况下,这甚至都不难。一个简单的浏览器插件可以重新定义Object.defineProperty。它是客户端代码的限制,您永远无法阻止用户编辑它。

最后,他总是可以下载你的JS代码,编辑它并再次运行它。

这就是为什么必须在服务器上检查所有评论等验证的原因!对客户端进行额外验证可能很有用,但绝不安全!

答案 1 :(得分:-1)

如果这是在一个对象中,您可以使用Object.freeze函数使其不可变。