私有属性
通常情况下我们定义的属性都是公共的,但往往我们实际业务需要把变量私有化不允许外部方式,要想让属性或方法变成私有可以使用一下几种方式:
# 类的私有属性
参考类私有域,以#为开头的命名的变量和方法会自动转成私有属性。
注意:#也属于名称的一部分,调用时也需要加上
// class
class DemoPrivate {
#value; // 以#开头
#privateMethod() {
}
}
const instance = new DemoPrivate(123)
console.log(instance.#value) // 会抛出异常
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# TypeScript 私有属性
如果你使用的是ts,就可以利用ts的private的语法实现变量的私有化
class PrivateDemo {
private _value
private setNum(num) {
this._value = num
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 闭包
根据闭包的描述,我们可以实现一个简单的闭包,如下:
可以看出外部函数useScoreOpt中定义的变量total对外部程序是私有,我们只能通过内部函数addNum和getNum实现访问和修改,相当于另类实现了私有属性
function useScoreOpt() {
let total = 0; // 内部属性
function addNum(num) {
total += num
return total
}
function getNum() {
return total
}
return { add: addNum, getNum: getNum }
}
let scoreOpt = useScoreOpt()
console.log(scoreOpt.add(10)) // 10
console.log(scoreOpt.add(5)) // 15
console.log(scoreOpt.getNum()) // 15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 2025/09/05, 8:09:00