Closure中文翻译为闭包.字面上来理解就是"封闭的包".(这是一句废话)
闭包是什么?
书面解释为: 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
我认为闭包就是能够读/写函数内部的某些变量的子函数,并将这些变量保存在内存中.
闭包的作用
上面的概念中已经提到过,主要就是为了读/写函数内部的某些变量,并将它保持在内存中.可能这样讲未必这么容易理解,下面让我们来看一些例子:
1,读取警察的生命值
function PoliceMan() {
//定义初始生命值
var lifeEnergy = 100;
//显示当前生命值
function showLifeEnergy() {
alert(lifeEnergy);
}
return showLifeEnergy;
}
//创建一个警察
var pm = new PoliceMan();
//显示当前生命值
pm();
2,读写/保存 警察的生命值
function PoliceMan() {
//定义初始生命值
var lifeEnergy = 100;
//中弹减少生命值
InBullet = function(){
lifeEnergy -= 1;
}
//显示当前生命值
function showLifeEnergy() {
alert(lifeEnergy);
}
......
一段JavaScript脚本程序,负责关闭窗口,如果网页不是通过脚本程序打开的(window.open()),调用window.close()脚本关闭窗口前,必须先将window.opener对象置为null,否则浏览器(IE7、IE8)会弹出一个确定关闭的对话框。
<script language="javaScript">
function closeWindow()
{
window.opener = null;
window.open(' ', '_self', ' ');
window.close();
}
</script>
<input type='button' value='关闭窗口' onClick="closeWindow()">
或
<input type="button" value="关闭窗口" onClick="window.opener = null;
window.open(' ', '_self', ' ');window.close()">
对于关闭框架窗口
<script language="javaScript">
function closeWindow()
{
window.opener = null;
window.open('', '_top', '');
window.parent.close();
}
</script> ......
关于
JavaScript
正则表达对象的使用,其参考手册介绍如下:
语法 1
re = /
pattern
/
[flags
]
语法 2
re = new RegExp("
pattern
",
["
flags
"
])
参数
re
必选项。将要赋值为正则表达式模式的变量名。
Pattern
必选项。要使用的正则表达式模式。如果使用语法 1
,用 "/"
字符分隔模式。如果用语法 2
,用引号将模式引起来。
flags
可选项。如果使用语法 2
要用引号将 flag
引起来。标志可以组合使用,可用的有:
g
(全文查找出现的所有 pattern
)
i
(忽略大小写)
m
(多行查找)
示例:去掉字符串
”aaa/bb/cc”
中非“
/
”字符
语法
1
使用方式:
Var srcStr = “aaa/bb/cc”;
srcStr.replace(/[^/]*/g,"");
语法
2
使用方式:
var re = new
RegExp("[^/]","g");
var srcStr = srcStr.replace(re,"");
由于
//
方式,正则是一个整体,无法加入变量。所以如果我们需加入变量只能用语法
2
的方式。具体使用如下:
Var mSplitString = “/”;
var re = new
RegExp(" ......
1. 客户端 //主要针对本地IE浏览器访问
<script
language="javascript">
function FileExist()
{
var sfso=new
ActiveXObject("Scripting.FileSystemObject");
var fPath="[The path of the
file]";
if(sfso.FileExists(fPath))
{
alert("Exist");
}
else
{
alert("Doesn't
exist");
}
}
</script>
2.
服务器端//远程浏览器访问和本地Firefox访问
<script
language="javascript">
function FileExist()
{
var xmlhttp=new
ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET",FileURL,false);
xmlhttp.send();
if(xmlhttp.readyState==4)
  ......
//获取当前文件全路径
<script language="javascript">
alert(window.location.href);
alert(window.location);
alert(location.href);
alert(parent.location.href);
alert(top.location.href);
alert(document.location.href);
alert(document.URL);
</script>
//获取当前目录方法
<script type="text/javascript">
//方法一
var str = location.href;
var arr = str.split("/");
delete arr[arr.length-1];
var dir = arr.join("/");
alert(dir);
//方法二
alert(location.href.substring(0,location.href.lastIndexOf('/')));
</script>
//获取当前文件名
<script language=javascript>
var filename=location.href;
filename=filename.substr(filename.lastIndexOf('/')+1);
alert(filename);
</script> ......
一、功能实现核心:FileSystemObject 对象
要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程
使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。
(一)创建FileSystemObject对象
创建FileSystemObject对象的代码只要1行:
var fso = new ActiveXObject("Scripting.FileSystemObject");
上述代码执行后,fso就成为一个FileSystemObject对象实例。
(二)应用相关方法
创建对象实例后,就可以使用对象的相关方法了。比如,使用CreateTextFile方法创建一个文本文件:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\\myjstest.txt",true");
(三)访问对象相关属性
要访问对象的相关属性,首先要建立指向对象的句柄,这就要通过get系列方法实现:GetDrive负责获取驱动器信息,GetFolder负责获取文件夹信息,GetFile负责获取文件信息。比如,指向下面的代码后,f1就成为指向文件c:\test.txt的句柄:
var fso = new ActiveXObject("Scripting.FileSys ......