我可以 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());
我正在开发一个使用 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());