| bsp; 您将可以看见可以输出index值("index is :10"),这个是js和其他语言的不同地方,因为index是在for循环的{}外面定义的,因此其作用范围在foo()函数使用完毕后才销毁。
类变量: 类变量,实际上就是类的一个属性或字段或一个方法,该变量在该类的一个实例对象被销毁后自动销毁,比如我们开始时举的Student类。这个我们不多讨论,大家可以自己试一下。
私有变量: 私有变量,值得是某个类自己内部是用的一个属性,外部无法调用,其定义是用 var 来声明的。注意如果不用var 来声明,该变量将是全局变量(我们下面将会讨论),如:
1function Student(name,age,from) 2{ 3 4 this.name = FormatIt(name); 5 this.age = age; 6 this.from = from; 7 var origName = name; 8 var FormatIt = function(name) 9 { 10 return name.substr(0,5); 11 } 12 this.ToString = function() 13 { 14 return "my information is name: "+origName+",age : "+this.age+", from :" +this.from; 15 } 16} 17 18 这里,我们分别定义了一个origName和FormatIt()两个私有变量(按面向对象的解释,应该用类的属性来称呼)。 我们把这种情况下的方法也成为变量,因为该情况下的变量是个function类型的变量,而function也属于Object类的继承类。在这种情形下,如果我们定义了 var zfp = new Student("3zfp",100,"ShenZhen")。但无法通过zfp.origName和zfp.FormatIt()方式来访问这两个变量的。
注意以下几点:
1、私有变量是不能用this来指示的。 2、私有方法类型的变量的调用必须是在该方法声明后。如我们将Student类改造如下:
1function Student(name,age,from) 2{ 3 var origName = name; 4 this.name = FormatName(name); 5 this.age = age; 6 this.from = from; 7 var FormatName = function(name) 8 { 9 return name+".china"; 10 } 11 this.ToString = function() 12 { 13 return "my information is name: "+origName+",age : "+this.age+", from :" +this.from; 14 } 15} 16var zfp = new Student("3zfp",100,"ShenZhen"); 代码执行后,将会报"找不到对象"的错误.意思是FormatName()未定义。
3、私有方法无法访问this指示的变量(公开变量),如下:
1 2function Student(basicinfo) &nb 上一页 [1] [2] [3] [4] 下一页 |