本文解析JavaScript构造函数中公有变量与私有变量的定义区别。通过代码示例说明,使用var声明的变量为局部私有变量,而this指向的变量为公有变量。文章进一步展示了如何利用闭包机制,在构造函数内部定义返回私有变量的方法,从而实现对外部访问私有数据的目的。
JavaScript 公有与私有变量的定义
阅读相关技术文章后,整理关于JavaScript变量作用域的笔记如下:
首先观察以下代码示例1:
function car(){
var wheel = 3;//私有变量
this.wheel = 4;//公有变量
alert(wheel);
alert(this.wheel);
}
执行 var car1 = new car(); 后,控制台依次弹出结果:3 和 4。
外部访问公有变量的限制
接着看代码示例2:
function car(){
var wheel = 3;//私有变量
this.wheel = 4;//公有变量
}
var car1 = new car();
执行 alert(car1.wheel); 后,结果为:4。
利用闭包访问私有变量
var wheel = 3为局部变量,this.wheel=4为公有变量,若需访问car中的私有变量,请参阅代码3:
function car(){
var wheel = 3;//私有变量
this.wheel = 4;//公有变量
this.getPrivateVal = function(){
return wheel;
}
}
var car1 = new car();
执行 alert(car1.getPrivateVal()); 后,结果为:3。