如何在 class 中定义变量并将其传递给函数

how to define a variable in a class, and pass it into a function

所以我正在为计算机游戏《反恐精英:全球攻势》编写一个脚本,该脚本可以改变玩家在游戏中的准星。游戏引擎使用的语言称为 Vscript。 Vscript 没有很好的文档记录,我唯一可以罚款的文档是一长串 functions。但是在尝试错误之后,我发现语法几乎与 JavaScript 相同,唯一真正的区别是语言中有特定的函数,例如 SetHealth 或 GetTeam,这些函数是特定于游戏的,不存在于JavaScript.

class crosshair_generator {
    // Initialize
    crosshair_hidden = false;

    function hideCrosshair() {
        if (crosshair_hidden == true) {
            // Hide the crosshair 
            SendToConsole("crosshair 0");
            printl("crosshair hidden!");
            self.crosshair_hidden = false;

        } else if (crosshair_hidden == false) {
            // Show the crosshair
            SendToConsole("crosshair 1");
            printl("crosshair shown!")
            crosshair_hidden = true;

        }
    }

    function CrosshairAlpha(Add) {
        // cl_crosshairalpha
    }
} 

当我打开游戏和 运行 脚本时,在游戏机内显示

AN ERROR HAS OCCURED [the index 'crosshair_generator' does not exist]

CALLSTACK
*FUNCTION [main()] InputRunScript line [1]

LOCALS
[this] TABLE
 Entity script_crosshair encountered an error in RunScript()

如果我在 hideCrosshair() 函数中定义 crosshair_hidden 变量 crosshair_hidden = false; 然后每次我调用函数时它的值都是假的。我需要在函数外定义它,这样变量就可以被其他函数访问,比如CrosshairAlpha(),所以每次调用函数时变量值都不完全相同。

那么如何在 JavaScript 中的 class 中定义变量,然后将该变量传递给函数?

您可以在构造方法中初始化properties,稍后使用this引用它们:

class crosshair_generator {
    // Initialize
    constructor(crosshair_hidden = false) {
        this.crosshair_hidden = crosshair_hidden;
    }

    hideCrosshair() {
        if (this.crosshair_hidden == true) {
            // Hide the crosshair 
            SendToConsole("crosshair 0");
            printl("crosshair hidden!");
            this.crosshair_hidden = false;

        } else if(this.crosshair_hidden == false) {
            // Show the crosshair
            SendToConsole("crosshair 1");
            printl("crosshair shown!")
            this.crosshair_hidden = true;

        }
    }

    CrosshairAlpha(Add) {
        // cl_crosshairalpha
    }
}