javascript - 为什么要这样使用 object.assign? (模块导出中的空函数上的新对象)

标签 javascript ecmascript-6

我最近在一些源代码中看到了这一点:

    module.exports = Object.assign(function GamepadButton() {}, {
            FACE_1: 0,
            FACE_2: 1,
            FACE_3: 2,
            FACE_4: 3,
         // etc...
        });
为什么要这样做?为什么要将对象分配给新声明的空函数?这里发生了什么? (我认为 module.exports 在这里无关紧要,但以防万一,我也将其包括在内。)
来源:https://github.com/donmccurdy/aframe-extras/blob/4a05b159a9f5b79321acf002b85fee6cfcddc4d2/dist/aframe-extras.controls.js#L9

最佳答案

我不确定这是不是作者这样写的目的,
但是 :
这是向 JavaScript 类添加静态变量的典型方式。
运行上面的代码后,就可以运行了

var myExports = new module.exports()
var myOtherExports = new module.exports()
你可以访问相同的FACE_1 , FACE_2 , 等来自所有实例的变量
myExports.constructor.FACE_1
myOtherExports.constructor.FACE_1
并且还与
module.exports.FACE_1
变量 共享同一引用 (静态变量行为)。

关于javascript - 为什么要这样使用 object.assign? (模块导出中的空函数上的新对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62590412/

相关文章:

javascript - 集中统一调用函数的解决方案/想法

javascript - 动态生成带有图像的 SVG?

Javascript:回调中的变量范围?

javascript - 在 React 组件中使用 ES6 分配属性

javascript - 在 es6 javascript 中引用 super 上下文

javascript - 如何在 JavaScript 中获取上周的开始日期和时间以及结束日期和时间

javascript - tinymce如何映射所见即所得的html代码和存储到数据库的textarea的输出?

javascript - 从 IBM Worklight Adapter 读取域

javascript - JQuery Chrome 扩展,无法更改 css 属性

ecmascript-6 - FlowType 是否支持混合或组合?