12306刷新间隔引发的抢票问题

进入12306订票页面,默认的刷新间隔时间是5s(5000ms),页面虽没有提供修改间隔的功能,但通过运行:
autoSearchTime=1000

可以将间隔时间修改为任意自己想要的值(如:1s),从而简单实现刷票。原因在于autoSearchTime是全局变量,通过控制台便可以任意的修改(甚至可以通过脚本实现刷新的调用)。如此,神马抢票软件、抢票浏览器都是浮云,何必冒着泄露隐私给第三方的风险去安装不必要的软件呢?
其实,JS完全可以避免使用全局变量,虽然没有提供private关键字,但已有不少成熟的模式实现变量的私有性:
1、构造函数方式:
function Gadget () {
var name = 'iPod';
this.getName = function () {
return name;
}
}
var toy = new Gadget();

name便是私有变量,无法通过toy.name访问。
2、对象私有性:
var myobj = (function () {
//私有成员
var name = 'my, oh my';
return {
getName: function () {
return name;
}
};
}());
myobj.getName();

即使用闭包的方式访问局部变量,该方式同时也是“模块模式”的基础框架。
3、构造函数方式改进(使用原型):
function Gadget () {
var name = 'iPod';
this.getName = function () {
return name;
}
}
Gadget.prototype = (function () {
var browser = 'Mobile Webkit';
return {
getBrowser: {
return browser;
}
};
}());
var toy = new Gadget();
console.log(toy.getName());
console.log(toy.getBrowser());

该方式避免了每次调用构造函数时重新创建私有成员,实现多个实例之间的数据共享。

此外,更为合理的方式是采用模块模式,具体介绍见《JavaScript模式》P99~P103
注,以上例子出自该书P94~P99。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值