读书人

控制台可否直接访问和修改函数内部变量

发布时间: 2013-08-04 18:26:16 作者: rapoo

控制台能否直接访问和修改函数内部变量和方法?
如果有全局变量但是我不希望用户随便拿浏览器的调试控制台去修改他们,可否把所有全局变量都封在一个函数里面呢?
这样的话,用户还能访问和修改这些变量吗?
比如这个样子


(function ()
{
var a = 5, b = new Array();
})();

然后我把所有代码全放这个匿名函数里面。
比如

(function ()
{
var i = 5;
var add = function () {
i++;
}
var sub = function () {
i--;
}
})();

如果要全局方法,那么去掉var,直接定义成全局方法。

(function ()
{
var i = 5;
add = function () {
i++;
}
sub = function () {
i--;
}
})();


感觉这样对数据有点点保护作用。。但是不知道有没有方法照样能访问这个匿名函数里的局部变量?
比如有没有可能向这个匿名函数添加一个内部方法的?

如果用户照样可以访问和修改这些变量,那怎么可以不让用户修改呢? JavaScript 控制台 全局变量
[解决办法]
public 才可以访问
私有的是访问不了的
[解决办法]
用户只要想修改就可以修改,只是修改难度大小的问题,大不了可以像修改单机游戏一样直接查找浏览器内存地址
[解决办法]
(function () {
var a = 5, b = new Array();
gets = function() {
return a
}

})();

gets();

[解决办法]
JS的话 无论你怎么封 用心的人还是可以通过断点来跟的
[解决办法]

(function () {
var a = 5, b = new Array();
gets = function() {
return a
}

})();

gets();


想取得a,b有些方法很简单的,记住js的覆盖,后声明的起作用。
 


var outa,outb;
(function () {
var a = 5, b = new Array();
outa=a;
outb=b;
gets = function() {
return a
}

})();

gets();



不就可以了么,你调用的时候会调用你后面的那个方法,outa,outb已经有值了,因为他覆盖了前面的。
js毕竟是客户端的东西想你怎么操作都可以。

读书人网 >JavaScript

热点推荐