【发布时间】:2021-11-13 09:31:09
【问题描述】:
我创建了一个班级Circle。这里
-
_radius是私有参数 -
_areaCalculate是私有方法
After 计算私有方法_areaCalculate 的值。我需要这个值到公共方法areaPrint。但它告诉我undefined。
const _radius = new WeakMap()
const _areaCalculate = new WeakMap()
class Circle {
constructor(r) {
_radius.set(this, r)
}
[_areaCalculate]() {
return (Math.PI * Math.pow(this.radius, 2)).toFixed(2)
}
areaPrint() {
console.log("The area of Circle is: " + _areaCalculate.get(this))
}
}
let c = new Circle(4)
c.areaPrint()
【问题讨论】:
-
[_areaCalculate]()不会创建一个名为_areaCalculate的方法,它会创建一个名为"[object WeakMap]"的方法,因为_areaCalculate将被转换为字符串。 -
话虽如此,您的任何代码都不会在
_areaCalculateWeakMap 中添加任何内容。 -
然后,如何使 _areaCalculate() 成为私有方法并从中获取价值。 @VLAZ
-
_radius和_areaCalculate如何被视为“私有”,它们只是类外部范围内的变量。如果所有这些都在一个函数中,那么你手头就有一个反模式。
标签: javascript instance-variables es6-class private-members