|
js变量作用域及可访问性的探讨(3) 基本结论是,私有方法只能访问私有属性,私有属性在声明并赋值后可以在类的任何地方访问,
实例变量: 实例变量即某个实例对象所拥有的变量。如:
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+"<br>"); 11var basicB = new BasicInfo("zfp",100,"ShenZhen"); 12document.write("basicB's generalInfo is : "+ basicB.generalInfo+"<br>"); 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对象被实例化后才能被初始化,也就是说如果将
|