JavaScript 面向对象:私有成员与公开成员的实现机制

作者:青柠时间:2026-10-24 21:20:54浏览:181

本文详解JavaScript中类私有与公开成员的实现原理。通过var声明的变量和方法为私有,仅限内部访问;通过this绑定的成员为公开,可被实例调用。文章结合代码示例对比了两种声明方式在实例化后的访问权限差异,并简述了静态类的公开特性。

JavaScript 私有与公开成员实现原理

在深入探讨之前,建议先回顾前两节关于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对象,因此所有成员默认均为公开且对外可见。

作者最新文章