Node.js 中的 Javascript 使用具有不同签名的函数

标签 javascript node.js function parameters overloading

query(userOptions)query(...args) 有什么区别?我知道它们可能是同一个函数调用的重载,但我不确定它们将如何实际调用或在调用程序中的什么情况下选择使用哪个重载,尤其是 static 装饰。

class Gamedig {
    constructor() {
        this.queryRunner = new QueryRunner();
    }

    async query(userOptions) {
        return await this.queryRunner.run(userOptions);
    }

    static getInstance() {
        if (!singleton) singleton = new Gamedig();
        return singleton;
    }
    static async query(...args) {
        return await Gamedig.getInstance().query(...args);
    }
}

最佳答案

static表示该函数已分配给构造函数,即 Gamedig。该函数被称为

Gamedig.query(...)

如果没有 static,该函数在 Gamedig 的实例上是可访问的,即

var instance = new Gamedig();
instance.query(...);

JavaScript 不支持函数重载。


userOptions vs ...args 与此无关。 rest parameter在函数定义中意味着该函数接受可变数量的参数,并且它们都收集在分配给该参数的数组中(args 在您的示例中)。

例子:

function foo(...bar) {
  console.log(bar);
}

foo(1);
foo(1,2);
foo(1,2,3);

关于Node.js 中的 Javascript 使用具有不同签名的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59416878/

相关文章:

javascript - 将变量插入 SQL 表

node.js - 在 SemaphoreCI 上升级 NodeJS

function - Lisp 错误,表单中未定义运算符 X

mysql - Node.js 异步嵌套 mysql 查询

python - 识别 python 函数内全局变量的无意读/写?例如使用静态分析?

python - 函数调用不执行其定义

javascript - Node 快速验证签名的cookie

javascript - 我怎样才能发现浏览器现在已经退出了

javascript - 当屏幕尺寸改变时调整固定物体的尺寸

java - Nodejs和java套接字实现错误: connect ECONNREFUSED 127. 0.0.1:8081