在 javascript 中,使用 # 前缀定义私有方法。只需在类体中声明以 # 开头的函数名即可,该方法只能在类的内部通过 this 调用,外部无法访问。

如何正确调用私有方法并处理参数传递
在类的方法中调用私有方法时,必须使用 this.#methodName() 的形式。如果私有方法需要接收参数,直接将其作为普通函数的参数传入即可,JavaScript 引擎会自动处理作用域隔离。

class Calculator {
#secretValue = 0;
constructor(value) {
this.#secretValue = value;
}
// 定义私有方法
#addSecret(amount) {
this.#secretValue += amount;
return this.#secretValue;
}
// 公共方法调用私有方法
process(amount) {
const result = this.#addSecret(amount);
console.log(`Processed: ${result}`);
return result;
}
}
const calc = new Calculator(10);
calc.process(5); // 输出: Processed: 15
私有方法在继承中的行为表现
私有方法不能被子类继承或访问。即使子类调用了父类的公共方法,而该公共方法内部调用了父类的私有方法,子类的实例也无法直接调用该私有方法。这种设计确保了封装性,防止子类意外修改父类的内部逻辑。

class Parent {
#privateMethod() {
return "I am private";
}
publicMethod() {
return this.#privateMethod();
}
}
class Child extends Parent {
test() {
// 以下代码会抛出 TypeError
// return this.#privateMethod();
return this.publicMethod(); // 正常工作
}
}
const child = new Child();
console.log(child.test()); // 输出: I am private
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











