首  页  |  酷站  |  精品网站  |  原创作品秀  |  网络学院   |  信息中心  |  艺术设计  |  求职招聘  |  建站资源  |  服装网站  |  论坛  |  设计部落  |  网站综合
个人网页  商业网站  业界动态  设计赛事  网站资源  下载专区  设计欣赏  CG-插画  JS特效  娱乐  国际品牌  知名品牌  服装院校  专题欣赏  SEO  BANNER
域名注册 虚拟主机 广州网站建设 广州网页设计 IDC赞助 设计资源下载 虚拟主机 域名注册 品牌网站建设 服装品牌网站建设 广告服务 网站推广 娱乐
当前位置:首 页 >> JS特效 >> 文本特效类 >> js变量作用域及可访问性的探讨

js变量作用域及可访问性的探讨

来源:webjx 被读265次

中资源
转载请注明出处-中国设计秀-cnwebshow.com

实例变量:
实例变量即某个实例对象所拥有的变量。如:

 1
 2function BasicInfo(name,age,from)
 3{
 4 this.name = name;
 5 this.age = age;
 6 this.from = from;
 7}
 8var basicA = new BasicInfo("3zfp",100,"ShenZhen");
 9basicA.generalInfo = "is 3zfp owned object";
10document.write("basicA's generalInfo is : "+ basicA.generalInfo+"
");
11var basicB = new BasicInfo("zfp",100,"ShenZhen");
12document.write("basicB's generalInfo is : "+ basicB.generalInfo+"
");
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+"
");
10document.write(BasicInfo.generalInfo+"
");
11BasicInfo.generalInfo = "info is changed";
12document.write(BasicInfo.generalInfo+"
");
执行以上代码,将会得到如下结果:
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+"
");
6}
7new foo("foo test");
8document.write(_foo+"
");
执行代码,将得到如下结果:
3zfp owned
foo test
但是,这个又有一个注意的地方,function是编译期对象,也就是说_foo这个全局变量要在foo对象被实例化后才能被初始化,也就是说如果将
new foo();
document.write(_foo+"
");
对调成
document.write(_foo+"
");
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+"
");
10 }
11}
12new foo("foo test").showInfo();
13document.write(copyright+"
");
执行代码,将得到如下结果:
3zfp owned
foo test

原因是由于function 是在编译期间完成变量的定义,也就是foo内部的copyright的定义是在编译期间完成的,其作用域只在foo对象内有效,而与外部定义的全局变量copyright无关。



<< 1 2 >>
转载请注明出处-中国设计秀-cnwebshow.com



投稿 】【对本文进行评论】 【字体: 】【发布于2006-10-20 15:35】

相关专题:暂无相关专题

上一篇:从下向上滚动的文字   下一篇:距离某天时间
 认证LOGO下载
     
Copyright © 2005-2007 中国设计秀_网页设计教程_优秀网页设计欣赏_平面设计欣赏 All Right Reserved.
做最专业的设计服务网站,秀出自我,秀出精彩!中国设计秀,秀---无处不在!!
QQ:54292427  8208442 MSN:kingvisual#hotmail.com 交流群:9107036 3848215 8850631
粤ICP备05067046号 RSS