javascript中的window.ActiveXObject和闭包是什么意思有什么作用,在...
发布网友
发布时间:2022-04-24 06:35
我来回答
共2个回答
热心网友
时间:2022-05-15 03:43
判断浏览器是否支持ActiveX控件
闭包的两个特点:
1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
例1。
<scripttype="text/javascript">
functionsayHello2(name){
vartext='Hello'+name;//localvariable
varsayAlert=function(){alert(text);}
returnsayAlert;
}
varsy=sayHello2('never-online');
sy();
</script>
作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。
上面的代码为什么是一个闭包?
因为sayHello2函数里有一个内嵌匿名函数
sayAlert = function(){ alert(text); }
在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。
在C或者其它的主流语言中,当一个函数返回后,所有的局部变量将不可访问,因为它们所在的栈已经被消毁。但在Javascript里,如果你声明了一个内嵌函数,局部变量将在函数返回后依然可访问。比如上例中的变量sy,就是引用内嵌函数中的匿名函数function(){ alert(text); },可以把上例改成这样:
<scripttype="text/javascript">
functionsayHello2(name){
vartext='Hello'+name;//localvariable
varsayAlert=function(){alert(text);}
returnsayAlert;
}
varsy=sayHello2('never-online');
alert(sy.toString());
</script>
这里也就与闭包的第二个特点相吻合。
例2。
<scripttype="text/javascript">
functionsay667(){
//Localvariablethatendsupwithinclosure
varnum=666;
varsayAlert=function(){alert(num);}
num++;
returnsayAlert;
}
varsy=say667();
sy();
alert(sy.toString());
</script>
上面的代码中,匿名变量function() { alert(num); }中的num,并不是被拷贝,而是继续引用外函数定义的局部变量——num中的值,直到外函数say667()返回。
例3。
<scripttype="text/javascript">
functionsetupSomeGlobals(){
//Localvariablethatendsupwithinclosure
varnum=666;
//Storesomereferencestofunctionsasglobalvariables
gAlertNumber=function(){alert(num);}
gIncreaseNumber=function(){num++;}
gSetNumber=function(x){num=x;}
}
</script>
<buttononclick="setupSomeGlobals()">生成-setupSomeGlobals()</button>
<buttononclick="gAlertNumber()">输出值-gAlertNumber()</button>
<buttononclick="gIncreaseNumber()">增加-gIncreaseNumber()</button>
<buttononclick="gSetNumber(5)">赋值5-gSetNumber(5)</button>
上例中,gAlertNumber, gIncreaseNumber, gSetNumber都是同一个闭包的引用,setupSomeGlobals(),因为他们声明都是通过同一个全局调用——setupSomeGlobals()。
你可以通过“生成”,“增加”,“赋值”,“输出值”这三个按扭来查看输出结果。如果你点击“生成”按钮,将创建一个新闭包。也就会重写gAlertNumber(), gIncreaseNumber(), gSetNumber(5)这三个函数。
热心网友
时间:2022-05-15 05:01
window.ActiveXObject判断浏览器是否支持ActiveX控件。
ActiveX 控件是一种可重用的软件组件,通过使用
ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。如,StockTicker控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性。现在,已有1000多个商用的ActiveX控件,开发控件可以使用各种编程语言,如C,C++,下一代的 Microsoft Visual Basic®,以及微软公司的 Visual Java开发环境Microsoft Visual J++™。 ActiveX控件一旦被开发出来,设计 和开发人员就可以把它当作预装配组件,用于开发客户程序。以此种方式使用 ActiveX控件,使用者无需知道这些组件是如何开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或应用程序的设计。