如何在 javascript/nodejs (ES6) 中创建静态函数/对象

2024-01-12

我想使用 Javascript/Node JS 创建一个静态类。我使用谷歌但我找不到任何有用的例子。

我想在 Javascript ES6 中创建类似这样的东西(C#):

public static MyStaticClass {
   public static void someMethod() {
      //do stuff here
   }
}

现在,我有这个类,但我认为每次从“require”调用它时,这段代码都会创建一个新实例。

function MyStaticClass() {
   let someMethod = () => {
      //do some stuff
   }
}
var myInstance = new MyStaticClass();
module.exports = factory;

注意JS是基于原型的编程 http://en.wikipedia.org/wiki/Prototype-based_programming, 代替基于类的 https://en.wikipedia.org/wiki/Class-based_programming.

您可以在对象中创建一个方法,而不是多次创建类来访问其方法,例如

var MyStaticClass = {
    someMethod: function () {
        console.log('Doing someMethod');
    }
}

MyStaticClass.someMethod(); // Doing someMethod

因为在 JS 中,一切都是对象(除了原始类型 https://developer.mozilla.org/en-US/docs/Glossary/Primitive + undefined + null)。就像你创建时一样someMethod上面的函数,您实际上创建了一个新的函数对象,可以使用someMethod inside MyStaticClass目的。(这就是为什么您可以访问someMethod类似物体MyStaticClass.someMethod.prototype or MyStaticClass.someMethod.name)

但是,如果您发现使用 class 更方便。 ES6 现在可以使用静态方法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static.

E.g.

MyStaticClass.js

class MyStaticClass {
    static someMethod () {
        console.log('Doing someMethod');
    }

    static anotherMethod () {
        console.log('Doing anotherMethod');
    }
}

module.exports = MyStaticClass;

Main.js

var MyStaticClass = require("./MyStaticClass");

MyStaticClass.someMethod(); // Doing someMethod
MyStaticClass.anotherMethod(); // Doing anotherMethod
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 javascript/nodejs (ES6) 中创建静态函数/对象 的相关文章

  • 弃用警告:时刻构造回退到 js Date

    我正在尝试转换这个日期时间 150423160509 这是 utc 日期时间 改为以下格式 2015 04 24 00 05 09 本地时区 通过使用 moment js var moment require moment timezone
  • 从 ES6 模块导入函数表达式或函数声明有什么区别?

    据我了解 参见第 16 3 2 1 节 http exploringjs com es6 ch modules html ES6 允许函数 类导出操作数使用不同的语法 区别在于导出的函数是否需要在导入时解释为函数声明 在这种情况下 您可以编
  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • Chrome 跨域 PATCH 请求不起作用

    我有一个带有 REST Api 的网站 现在我正在创建一个浏览器扩展 它将从某些页面收集数据并将它们发送回 REST Api 因为我希望我的扩展能够与 Firefox 和 Chrome 兼容 并且易于维护 所以我将实际代码作为脚本标记注入到
  • 处理时区转换的 JavaScript 库

    是否有一个 JavaScript 库可以处理时区转换 并考虑 DST 规则和此类内容 我知道有类似的问题 但我见过的问题似乎都没有真正适合我的问题的答案 我想在时区 A 创建一个日期并能够对其进行操作 添加天数 小时等 然后将其转换为另一个
  • 如何检查侧边栏视图是否已经在主干中渲染?

    通常 用户通过主页进入网站 然后我在那里渲染侧边栏视图 接下来 用户单击链接 路由器呈现另一个视图并替换原始内容视图 侧边栏视图不会重新渲染 当用户在子页面上单击刷新时 侧边栏不会呈现 如何检查视图是否存在并且已渲染 划分责任并坚持下去 不
  • 如何在socket.io Nodejs服务器上列出房间

    在问题取得进展后如何创建socket io多播组 https stackoverflow com questions 6616922 how to create socket io multicast groups 6624604 6624
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • 带有桌子的嵌套表

    我在应用了表排序器的表中嵌套了表 它在嵌套表中添加了排序标题 但是它们没有对行进行排序 并且抛出了JavaScript错误 我想拥有 嵌套表不可排序 巢表上的排序实际上可以工作 但不是现状 您的第一个选择要容易得多 使嵌套表不可排序 像这样
  • 如何处理 setTimeout() 的多个实例?

    阻止创建 setTimeout 函数的多个实例 在 JavaScript 中 的最推荐 最佳方法是什么 一个例子 伪代码 function mouseClick moveDiv div 0001 mouseX mouseY function
  • FullCalendar:如何重新创建/重新初始化 FullCalendar 或批量添加多个事件

    我正在尝试将新事件批量添加到日历中 但未能找到方便的使用方法 所以我决定用新的事件数组重新初始化视图 所以我尝试了以下方法 var events title Event start new Date y m d 10 description
  • 如果突出显示一个单词并且用户单击连接单词,则同时突出显示两个单词

    我最近发布了一个question https stackoverflow com questions 34963610 how can i highlight a word term quicker and smarter寻求一种更智能地突
  • 如何使用转义的 unicode 解码字符串?

    我不确定这叫什么 所以我在搜索时遇到了麻烦 如何使用 unicode 解码字符串http u00253A u00252F u00252Fexample com to http example com使用 JavaScript 我试过unes
  • 电子邮件模板中的剪贴板功能

    我想在电子邮件模板中发送优惠券代码 一个小按钮 用于复制剪贴板上输入元素的内容 通过电子邮件模板 我的意思是我想发送一封电子邮件 其中包含优惠券代码 并且电子邮件模板中会有一个按钮 允许我将其复制到剪贴板 这可以做到吗 任何帮助将不胜感激
  • 如何使用 API 中的数据填充选择的下拉元素 - ReactJS

    我对 React 还很陌生 我正在从 API 获取数据 当我检查控制台日志时可以看到数据 但是我不知道如何使用 map 创建一个新数组 然后选项元素可以使用该数组来显示货币代码 目前它填充下拉列表 但选项元素全部为空 结果显示为 NaN 下
  • redux - 如何存储和更新键/值对

    我正在使用 redux 和 React js 我想存储简单的键 值对 但无法获得正确的减速器语法 在这种情况下 每个键 值对将保持与外部系统的连接 这是正确的做法吗 我刚开始使用 redux 所以这有点神秘 export default s
  • 如何在react.js中将/n替换为换行符?

    我正在尝试更换每一个 n to a br tag in ReactJS In my note note对象有一个包含多个的字符串 n in it 示例注释 注释 test ntest ntest 我尝试过的ReactJS note note
  • Node.js 上的 Connect 出现“无法 GET /”

    我正在尝试使用以下方式开始提供一些静态网页connect像这样 var connect require connect var nowjs require now var io require socket io var app conne
  • 用于替换前 5 个数字的正则表达式,无论它们之间有什么?

    我正在努力实现以下匹配 Input 123 45 6789 123456789 1234 正则表达式尝试输出 d 5 123 45 6789 123456789 1234 d 2 3 123 45 6789 123456789 1234 d
  • NPM 如何处理版本冲突?

    由于 NPM 版本 3 节点模块和依赖项都安装在同一根级别 但是 如果我安装两个依赖于同一模块的两个不同版本的模块怎么办 例如 如果我安装异步npm i email protected cdn cgi l email protection

随机推荐

  • 在 PowerShell 中,如何将 DateTime 转换为 UNIX 时间?

    在PowerShell中 如何将DateTime字符串转换为秒数总和 PS H gt New TimeSpan Start date1 End date2 TotalSeconds 1289923177 87462 New TimeSpan
  • 在 XAML 中使用图像向按钮添加鼠标悬停效果

    我有一个带有图像的按钮 如下所示
  • 从通过 LINQ 连接的两个 DataTable 创建组合 DataTable。 C#

    我有以下代码填充dataTable1 and dataTable2通过两个简单的 SQL 查询 dataTableSqlJoined由相同的表填充但连接在一起 我正在尝试编写一个 LINQ 查询来创建dataTableLinqJoined就
  • 如何使用 Python 启动 Window 快捷方式

    我想启动一个名为blender ink位于 D games blender ink 我尝试过使用 os startfile D games blender ink 但失败了 它只启动exe文件 蟒蛇os startfile https do
  • 如何在 Windows 上进行非阻塞 IPC 读取?

    我有一个 Perl 脚本 它使用外部工具 cleartool 来收集有关文件列表的信息 我想使用 IPC 来避免为每个文件生成一个新进程 use IPC Open2 my cin cout my child open2 cout cin c
  • 如何在 Ortools 中定义约束以设置不同值的限制

    我试图定义一个约束来限制求解器生成的唯一值的数量 它可以生成尽可能多的重复项来解决问题 但唯一值有限制 为每个值创建一个布尔变量selected value这是正确的 当且仅当至少为它分配了一个值 为此 您将需要 2 组约束 从左到右 se
  • PHP 替换字符串

    string http site com category 1 news 2134 1 is dynamic 我该如何改变1到我想要的任何号码 无法调用字符串的一部分 它只是一个类似文本的变量 可以使用一些真正的正则表达式来完成 strin
  • 需要避免子进程死锁而不进行通信

    我需要执行一个命令 该命令会产生大量输出 并且需要花费大量时间来执行 gt 30 分钟 我正在考虑使用 subprocess Popen 来做到这一点 我需要捕获命令的输出 因此我将 PIPE 传递给 stdout 和 stderr 使用
  • MAX 使用 gcc 的 typeof 扩展

    我已经用 C 编程有一段时间了 所以我决定学习一些高级 C 我听说过 gcc 编译器扩展 下面我看到了 MAX 的代码 到目前为止我已经实现如下 define MAX x y x gt y x y 这是我找到的新定义 不幸的是我什至不明白下
  • 从 Java 调用 python

    我正在为公司的内部工具包构建前端 一半的工具是用 python 编写的 另一半是用其他几种脚本语言编写的 所以我正在使用 swing 在 java 中构建前端 到目前为止 我可以通过以下代码调用 python 脚本 public class
  • Android 推送通知在应用程序关闭时不起作用

    我在用着OkSse https github com heremaps oksse订阅我的服务器发送事件 每当服务器发送新消息时 无论应用程序是否处于运行状态 都应该出现通知前景 最小化或完全关闭 通知按预期工作最小化或在前台但当全封闭 这
  • 如何使用 .htaccess 拒绝除一个目录名之外的所有目录名?

    我有这个 htaccess 文件 我可以在其中阻止用户从浏览器物理访问文件 它们只能通过系统加载 Options Indexes Order deny allow deny from all 但我有一个问题 有时我通过 AJAX 加载文件
  • 使用 Activerecord 对多列求和

    我是 Activerecord 的新手 我想对模型学生的多列进行求和 我的模范学生如下 class Student lt ActiveRecord Base attr accessible class roll num total mark
  • Java 不是异步做事吗?

    我正在尝试学习 Java 我正在阅读一个教程 内容如下 while N lt 0 TextIO put The starting point must be positive Please try again N TextIO getlnI
  • 如何将 xlsx 或 xls 文件读取为 Spark 数据帧

    谁能告诉我在不转换 xlsx 或 xls 文件的情况下我们如何将它们读取为 Spark 数据框 我已经尝试使用 pandas 进行读取 然后尝试转换为 Spark 数据帧 但出现错误 错误是 Error Cannot merge type
  • OpenCV Python QueryFrame 函数泄漏内存

    我正在使用Python接口用于OpenCV 2 2 0 以下代码可以正确地从视频文件中抓取帧 for f in range 1 frameCount grab the left and right frames frameL cv Quer
  • 如何使用jquery Ajax数据操作

    我试图弄清楚在 Ajax 调用中使用什么以及如何使用 data 参数 问题是我不确定数据调用中的 操作 部分应该做什么 它是控制器中的一个动作吗 如果是 我该如何正确引用它 var data action get all users dat
  • Mono 随机 CS0006 编译错误 w/fastcgi-mono-server4

    我正在尝试使用 mono 2 10 8 1 w fastcgi mono server4 在我的 Linux 服务器上部署在 Mono OSX 上开发的 ASP MVC 项目 Web 应用程序总是启动正常 但随后我开始收到各种 URI 的随
  • OSX 上的 scp 不允​​许用户名中包含空格?

    我需要 ssh 进入正在运行的 Windows 7 机器MobaSSH http mobassh mobatek net 作为其 SSH 守护进程 Windows 框中的用户名包含空格 我可以在 OSX 终端上登录 Windows 7 盒子
  • 如何在 javascript/nodejs (ES6) 中创建静态函数/对象

    我想使用 Javascript Node JS 创建一个静态类 我使用谷歌但我找不到任何有用的例子 我想在 Javascript ES6 中创建类似这样的东西 C public static MyStaticClass public sta