【问题标题】:Is it possible to set module.exports as a setter/getter javascript?是否可以将 module.exports 设置为 setter/getter javascript?
【发布时间】:2021-06-06 02:10:47
【问题描述】:

在文件 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)

【问题讨论】:

  • 这里稍微解释一下发生了什么。当您需要 a 时,您将获得 getter 返回的值,而不是 getter 对象本身,因为它是 getter,因此返回的对象是数字,而不是对象。您还将值分配给一个不能被覆盖的常量。

标签: javascript node.js getter-setter accessor


【解决方案1】:

是的!而且,没有。

虽然这在技术上是可行的,但您会遇到在需要 setter 时无法访问它的问题,因为它会调用 Getter 并在 require()'d 时返回值。因此 getter/setter 功能只能通过源文件访问,getter 提供对 require 的响应。

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多