我可以 add/declare 属性到 JavaScript 中的函数吗?

Can I add/declare properties to a function in JavaScript?

我正在开发一个使用 HTML、CSS 和 JavaScript 的角色扮演游戏,并将 jQuery 作为个人项目。现在我正在做 HUD,玩家将有按钮来显示角色信息、库存等信息。如果单击,每个按钮都会创建一个 div,其中将显示所需的信息再次打开 div 它将删除它(或关闭它)。

据我了解,JS中的函数被视为对象,因此可以添加属性,我想向创建div作为标志的函数添加一个布尔值属性检查 window 是打开还是关闭,这样我就不必将全局变量声明为每个按钮的标志。

如何在函数中声明这些属性?

示例:

let windowCharInfo = () => {
  this.opened = false;
  this.windowDisplay = function() {
    $('<div>', {
        class: 'HUDWindow',
        id: 'charInfoWindow'
    }).appendTo('#charInfo'); // Here's the window that will be created

    // Some other code to add elements to that window will be here
  }
}

let windowCharInfo() 已经是一个对象,还是我必须使用 'new' 关键字将它存储在变量中?

另外,windowCharInfo() 将在用户单击“#charInfo”时调用(使用 onclick:'windowCharInfo()' )

这是一个简单的构造函数:

function Player(type) {
  this.type = type;
  this.weapons = []; // public
  var thaco; // private
  this.setTHACO = function(thaco) {
    this.thaco = thaco;
    return this;
  }
  this.getTHACO = function() {
    return this.thaco;
  }
  this.addWeapon = function(weapon) {
    this.weapons.push(weapon);
    return this;
  }
}
var player1 = new Player('elf'); // now it's an Object
player1.addWeapon('sword').addWeapon('axe').setTHACO('18');
console.log(player1.type);
var weapons1 = player1.weapons;
for (var i = 0, l = weapons1.length; i < l; i++) {
  console.log(weapons1[i]);
}
console.log(player1.getTHACO());