const _radius = new WeakMap()
class Circle {
constructor(radius) {
_radius.set(this, radius)
}
draw() {
console.log(`Circle with radius ${_radius.get(this)}`)
}
}
const c = new Circle(10)
console.log(_radius.get(c))// 暴露了
c.draw()
CommonJS
// index.js
const { Circle } = require('./circle')
const c = new Circle(10)
c.draw()
// circle.js
const _radius = new WeakMap()
class Circle {
constructor(radius) {
_radius.set(this, radius)
}
draw() {
console.log(`Circle with radius ${_radius.get(this)}`)
}
}
module.exports.Circle = Circle
ES6 Module
// index.js
import { Circle } from './circle.js'
const c = new Circle(10)
c.draw()
// circle.js
const _radius = new WeakMap()
export class Circle {
constructor(radius) {
_radius.set(this, radius)
}
draw() {
console.log(`Circle with radius ${_radius.get(this)}`)
}
}