js变量作用域及可访问性的探讨(2)
2008-02-23 08:04:47来源:互联网 阅读 ()
13执行该代码后,我们将可以看到如下结果:
14basicA's generalInfo is : is 3zfp owned object
15basicB's generalInfo is : undefined
16
静态变量:
静态变量即为某个类所拥有的属性,通过 类名 "." 静态变量名 的方式访问该属性。如下可以做清晰的解释:
1function BasicInfo(name,age,from)
2{
3 this.name = name;
4 this.age = age;
5 this.from = from;
6}
7BasicInfo.generalInfo = "is 3zfp owned object";
8var basic = new BasicInfo("zfp",100,"ShenZhen");
9document.write(basic.generalInfo "<br>");
10document.write(BasicInfo.generalInfo "<br>");
11BasicInfo.generalInfo = "info is changed";
12document.write(BasicInfo.generalInfo "<br>");
执行以上代码,将会得到如下结果:
undefined
is 3zfp owned object
info is changed
注意以下几点:
1、以 类名 "." 静态变量名 的方式来声明一个静态变量
2、静态变量并不属于类的某个实例对象所独有的属性,为对象的共享.
3、能以实例对象名 "." 静态变量名来访问。
全局变量:
全局变量即整个系统运行期间有效访问控制的变量,通常是在一个js代码开头定义,如:
1
2var copyright = "3zfp owned";
3var foo =function()
4{
5 window.alert(copyright);
6}
注意以下几点:
1、如果一个变量不用var 来声明,则其被视为全局变量。如:
1var copyright = "3zfp owned";
2var foo =function(fooInfo)
3{
4 _foo = fooInfo;
5 document.write(copyright "<br>");
6}
7new foo("foo test");
8document.write(_foo "<br>");
执行代码,将得到如下结果:
3zfp owned
foo test
但是,这个又有一个注意的地方,function是编译期对象,也就是说_foo这个全局变量要在foo对象被实例化后才能被初始化,也就是说如果将
new foo();
document.write(_foo "<br>");
对调成
document.write(_foo "<br>");
new foo();
系统将提示 "_foo 未定义"。
2、如果定义了一个和全局变量同名的局部变量属性,如下:
1
2
3var copyright = "3zfp owned";
4var foo =function(fooInfo)
5{
6 var copyright = fooInfo; //同名变量
7 this.showInfo = function()
8 {
9 document.write(copyright "<br>");
10 }
11}
12new foo("foo test").showInfo();
13document.write(copyright "<br>");
执行代码,将得到如下结果:
3zfp owned
foo test
原因是由于function 是在编译期间完成变量的定义,也就是foo内部的copyright的定义是在编译期间完成的,其作用域只在foo对象内有效,而与外部定义的全局变量copyright无关。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:下拉菜单的简单制作
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
