是否可以将 module.exports 设置为 setter/getter javascript?
Is it possible to set module.exports as a setter/getter javascript?
在文件中 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
的东西上使用 setter)
是的!而且,没有。
虽然这在技术上是可行的,但您随后 运行 遇到无法访问 setter 的问题,因为它会调用 Getter 和 return require() 时的值。因此 getter/setter 功能只能通过源文件访问,getter 提供对要求的响应。
在文件中 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
的东西上使用 setter)
是的!而且,没有。
虽然这在技术上是可行的,但您随后 运行 遇到无法访问 setter 的问题,因为它会调用 Getter 和 return require() 时的值。因此 getter/setter 功能只能通过源文件访问,getter 提供对要求的响应。