gpt4 book ai didi

javascript - 限制对 JavaScript 变量的访问

转载 作者:行者123 更新时间:2023-11-30 17:29:14 24 4
gpt4 key购买 nike

我正在修改我们正在开发的游戏的模块,它是使用 ImpactJS 游戏引擎构建的。我们想要做的是使变量私有(private)或其他类无法访问。

例如:

this.object.variable = 100; // Not okay.
this.object.setVariable( 100 ); // Okay.

ig.module(
'game.data.server'
).requires(

).defines(function(){

ServerData = ig.class.Extend({
_variable : -1,

get variable() {
return this._variable ;
},
setVariable: function( value ) {
this._variable = value;
}
});
});

但是JavaScript setter and getter return different outputs

我们无法进行多次修改,因为我们正在开发的其他游戏也会访问它。

有没有更好的解决方案?

最佳答案

第一种可能性

您可以尝试这样做,但由于我没有使用 ImpactJS 开发任何东西,它可能无法按预期工作,因为它取决于 .class.extend() 函数在内部执行的操作。

但这值得一试。

var ServerData = ig.class.Extend((function() {
var privateVar = -1;
return {
getVariable: function() {
return privateVar;
},
setVariable: function(value) {
privateVar = value;
}
};
})());

这段代码对你来说可能看起来有点困惑,但我所做的改变是我创建了一个立即执行的函数来创建一个函数闭包,这是创建私有(private)空间所必需的,我在其中创建私有(private)的闭包变量,在外部不可见。

我建议您阅读 Douglas Crockford's Javascript并了解更多有关您正在使用的语言的知识。

第二种可能

根据 link in comments看来我们也可以对私有(private)成员使用define 的闭包:

var privateVar = -1;

var ServerData = ig.class.Extend({
getVariable: function() {
return privateVar;
},
setVariable: function(value) {
privateVar = value;
}
});

关于javascript - 限制对 JavaScript 变量的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23533602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com