控制台能否直接访问和修改函数内部变量和方法?

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

(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--;
}
})();


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

如果用户照样可以访问和修改这些变量,那怎么可以不让用户修改呢?
...全文
338 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnvlyp 2013-07-11
  • 打赏
  • 举报
回复
引用 4 楼 waiting593 的回复:
可以改,js源代码都可以拿到,有什么不能改的。
就是问怎么访问私有变量和方法? 除了作弊一般的修改内存地址之外。
UEAnswer 2013-07-11
  • 打赏
  • 举报
回复
可以改,js源代码都可以拿到,有什么不能改的。
UEAnswer 2013-07-11
  • 打赏
  • 举报
回复

(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毕竟是客户端的东西想你怎么操作都可以。
vnvlyp 2013-07-11
  • 打赏
  • 举报
回复
引用 6 楼 veryhunger 的回复:
(function () {
    var a = 5, b = new Array();
    gets = function() {
      return a
    }
    
})();

gets();
如果是别人访问我的网站,那么我肯定不会写个gets方法来返回a,我想问别人是否能否用控制台得到a,b这种私有变量呢?比如写个这种gets添加到这个匿名函数里面? 大概意思是 假设有个getObject可以获得那个匿名函数, 然后有个append方法可以向函数添加变量和方法什么的。 于是可能有如下代码
var func = getObject();
var gets = function() {
    return a;
}
func.append(gets);
当然getObject和append都是虚构的,但是按这个逻辑能否实现获取私有成员呢?
萧萧可乐 2013-07-11
  • 打赏
  • 举报
回复
JS的话 无论你怎么封 用心的人还是可以通过断点来跟的
  • 打赏
  • 举报
回复
(function () {
    var a = 5, b = new Array();
    gets = function() {
      return a
    }
    
})();

gets();
vnvlyp 2013-07-10
  • 打赏
  • 举报
回复
那意思是可以用我那种方法保护变量和方法喽?
hch126163 2013-07-10
  • 打赏
  • 举报
回复
public 才可以访问 私有的是访问不了的
天际的海浪 2013-07-10
  • 打赏
  • 举报
回复
用户只要想修改就可以修改,只是修改难度大小的问题,大不了可以像修改单机游戏一样直接查找浏览器内存地址
运行环境,web server,同一个域中。 WEB 开发人员的得力工具,只需要在网页中嵌入一个js文件,即使在模式对话框中,也一样方便在线查看网页源码,javascript变量,在页面上执行自定义脚本,即写即运行,不影响被调试页面的外观。 主要功能: 变量 debugLevel 设置调试级别:, 1), debug:可以在页面载入的过程中打印信息到控制台 2), info :不可以在页面载入的过程中打印信息到控制台 3), 不定义变量将不载入调试环境 1,显示javascript的运行结果, < body>标签后嵌入 < SCRIPT LANGUAGE="JavaScript" src="debug.js">< /SCRIPT> < SCRIPT LANGUAGE="JavaScript"> var s = "string"; out.print(s); < /SCRIPT> 详细参考:hidden.html 2,通过控制台查看目的网页的DOM文档树,执行JavaScript脚本, 界面介绍: 1, 命令历史窗口:保存命令的历史 2, 命令窗口 直接输入javascript语句,如:document.title; 将返回被调试页面的页面标题; 如果需要执行多语句并返回值,请放在匿名函数中执行, 点击匿名函数,自动出现匿名函数结构。 3, 返回结果窗口 4, USE:选择需要调试的页面,当无效的选项过多时请刷新页面 5, 随机命名:当一个页面同时被打开多次时,需要选中此项。如:test.jsp,test.jsp?id=1, test.jsp?id=30 小技巧:先开启脚本控制台页面,被调试的页面打开后将会自动注册到控制台

87,918

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧