将变量传递给(全局?)导出的类

编程入门 行业动态 更新时间:2024-10-08 07:26:14

将变量传递给(<a href=https://www.elefans.com/category/jswz/34/1765343.html style=全局?)导出的类"/>

将变量传递给(全局?)导出的类

[如果这个问题没有实际意义,我深表歉意-我可能对module.export的确切工作方式以及各类之间的作用域缺乏了解,但我会尽力进行解释。我目前有一个带有MusicPlayer类音乐播放器的discord机器人-此类以这种方式导出:

const ytdl = require('ytdl-core-discord');
const MusicQueue = require('./musicqueue');
const discordUtils = require ('../../../utils/discord-utils');

class MusicPlayer {
    constructor() {
        this.repeat_playlist = false;
        this.queue = new MusicQueue(); // this is the persistent queue for the server
        this.dispatcher = null;
        this.volume = 1; 
        this.stopped = true;
        this.paused = false;
        this.repeat_current_song = false;
        this.auto_delete = false;
        this.manual_index = false;
        this.autodcEnabled = false;
    }

    ....
}

module.exports = new MusicPlayer();

我有各种与音乐相关的命令可以像这样导入此音乐播放器:

const { Command } = require('discord.js-commando');
const discordUtils = require ('../../utils/discord-utils');
let musicplayer = require(`./modules/musicplayer`);

module.exports = class TestCommand extends Command {
    constructor(client) {
        ....
    }
    ...
}

我的问题是,由于要通过musicplayer导出局部变量,因此该如何将其传递给module.exports = new MusicPlayer();构造函数?

据我了解,使用module.exports = new MusicPlayer();将使我可以在整个项目中使用相同的musicplayer对象(这是我想要的);但是-这是我不确定module.exports如何工作的地方-无法保证musicplayer何时会被实例化。

如果您从不使用与音乐相关的命令,则将不会创建musicplayer,因为将永远不会运行let musicplayer = require('./modules/musicplayer');,对吗?

两种方法中,现在我都需要从其中一个命令中将某些内容传递给musicplayer构造函数,该如何以不必重复执行类似操作的方式来做到这一点:每个需要音乐播放器的文件?我有没有办法一次声明let musicplayer = require('./modules/musicplayer')(variable);并在整个代码库中使用let musicplayer = require('./modules/musicplayer')(variable);

回答如下:

让我们列出一些要求:

更多推荐

将变量传递给(全局?)导出的类

本文发布于:2024-05-07 09:21:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755581.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:全局   变量

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!