问题描述
在文件 a.js
// a.js
let a = 1
Object.defineProperty(module,"exports",{
get() {
return a
},set(v) {
a += 1
},enumerable: true,configurable: true,})
在文件 b.js
// b.js
const a = require("./a")
console.log(a) // 1
a = 2 // a should Now be 3
// Throws "Uncaught TypeError: Assignment to constant variable."
有没有办法做到这一点? (在我require
'd 的东西上使用 setter)
解决方法
是的!但也没有。
虽然这在技术上是可行的,但您会遇到无法访问 setter 的问题,因为它会在 require() 调用时调用 Getter 并返回值。所以 getter/setter 功能只能通过源文件访问,getter 提供对 require 的响应。