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

2019-06-03 16:10:00王冬梅

 } 

var zfp = new Student("3zfp",100,"ShenZhen"); 代码执行后,将会报"找不到对象"的错误.意思是FormatName()未定义。

3、私有方法无法访问this指示的变量(公开变量),如下:


function Student(basicinfo) 

 this.basicInfo = basicinfo; 

 var FormatInfo = function() 
 { 
  this.basicInfo.name = this.basicInfo.name+".china"; 
 } 
 FormatInfo(); 

function BasicInfo(name,age,from) 

 this.name = name; 
 this.age = age; 
 this.from = from; 

var zfp = new Student(new BasicInfo("3zfp",100,"ShenZhen")); 执行代码后,系统将会提示 “this.basicInfo为空或不是对象”的错误。
基本结论是,私有方法只能访问私有属性,私有属性在声明并赋值后可以在类的任何地方访问,

实例变量:
实例变量即某个实例对象所拥有的变量。如:
function BasicInfo(name,age,from) 

 this.name = name; 
 this.age = age; 
 this.from = from; 

var basicA = new BasicInfo("3zfp",100,"ShenZhen"); 
basicA.generalInfo = "is 3zfp owned object"; 
document.write("basicA's generalInfo is : "+ basicA.generalInfo+"<br>"); 
var basicB = new BasicInfo("zfp",100,"ShenZhen"); 
document.write("basicB's generalInfo is : "+ basicB.generalInfo+"<br>"); 
执行该代码后,我们将可以看到如下结果: 
basicA's generalInfo is : is 3zfp owned object 
basicB's generalInfo is : undefined 静态变量:

静态变量即为某个类所拥有的属性,通过 类名+"."+静态变量名 的方式访问该属性。如下可以做清晰的解释:

function BasicInfo(name,age,from) 

 this.name = name; 
 this.age = age; 
 this.from = from; 

BasicInfo.generalInfo = "is 3zfp owned object"; 
var basic = new BasicInfo("zfp",100,"ShenZhen"); 
document.write(basic.generalInfo+"<br>"); 
document.write(BasicInfo.generalInfo+"<br>"); 
BasicInfo.generalInfo = "info is changed"; 
document.write(BasicInfo.generalInfo+"<br>"); 
执行以上代码,将会得到如下结果:
undefined
is 3zfp owned object