这很可能是非常简单的。
我用canvas和js创建了一个游戏。但是我偶然发现了一个问题。由于可以访问chrome控制台中的变量和代码,因此可以更改f.ex。玩家得分达到我想要的水平。这不是很好。
是否可以通过控制台使文件和变量无法访问以供玩家使用?
谢谢!
答案 0 :(得分:3)
您可以将整个脚本放入IIFE中,以便所有声明的变量都将作用于刚刚调用的函数,而不是位于顶层并且可以在任何地方访问。例如:
(function() {
var playerName = 'bob';
var turnCount = 1;
// do stuff with playerName and turnCount,
// they won't be accessible or changeable from the outside
// you can declare functions and such here as well
// which will also only be accessible from the inside
})();
像这样,从控制台引用playerName
将会失败。
答案 1 :(得分:1)
您可以使用代理。 javascript proxy
或者您可以进行IIFE并仅公开所需的功能,例如:
var App = (function() {
var test = '';
var init = function() {
App.test = 'test';
};
return {
init: init
};
})();
或将您的属性定义为Object.defineProperty()
不可写