本文通过具体代码示例,解析 JavaScript 中如何利用 var、function 和 this 关键字区分私有与公开成员。文章指出,在类内部使用 var 声明的变量或 function 定义的方法为私有,仅内部可访问;而通过 this 绑定的成员则为公开,实例可直接调用。此外,还简要说明了静态类作为 JSON 对象时所有成员公开的特性。
JavaScript 私有与公开成员的定义规则
理解这一概念并不复杂,直接通过下方的代码及其注释即可清晰掌握核心逻辑。
具体实现代码如下:
首先声明一个类,这本质上是一个函数。在 JavaScript 中,命名空间、类以及成员等概念均可视为对象。
MyClass = function(){
var _this=this;
// 定义私有变量
var aa="11";
// 定义公开变量
this.bb="22";
// 定义私有方法
function fun1(){
alert(aa);
alert(_this.bb);
}
// 另一个私有方法
var fun2=function(){
alert(aa);
alert(_this.bb);
}
// 定义公开方法
this.fun3=function(){
alert(aa);
alert(_this.bb);
}
}
// 测试用例如下:
var mc=new MyClass();
mc.aa="AA";// 访问失败
mc.bb="BB";// 访问成功
mc.fun1();// 调用失败
mc.fun2();// 调用失败
mc.fun3();// 调用成功 实例类与静态类的成员可见性差异
总结来说,在类的内部定义中:
使用 var 关键字声明的变量或方法是私有的;
使用 function 关键字直接声明的方法也是私有的;
而通过 this 关键字绑定的变量或方法则是公开的。
上述规则主要适用于实例化的类。对于静态类而言,其本质就是一个 JSON 对象,因此其所有成员均为公开状态,对外完全可见。
作者: 祥叔
出处:http://xumingxiang.cnblogs.com/