Javascript 调用对象时自动在该对象内运行函数

Javascript 调用对象时自动在该对象内运行函数,javascript,function,oop,Javascript,Function,Oop,我正在使用Javascript构建一个基于文本的choice RPG游戏。我可以在对象内部添加函数并运行它们,但是,如果选择了选项(文本节点),我希望函数运行 目前,我声明了一个函数,然后在页面底部调用它。问题是,我希望功能在选择选项后立即运行 这是我到目前为止的代码 函数addRadiatedStatus(){ character.com=true; } 常量textNodes=[ { id:1, 文本:“你想帮助这个人吗?”, 选项:[ { 文本:“是”, 下一个文本:2 }, { 文本:

我正在使用Javascript构建一个基于文本的choice RPG游戏。我可以在对象内部添加函数并运行它们,但是,如果选择了选项(文本节点),我希望函数运行

目前,我声明了一个函数,然后在页面底部调用它。问题是,我希望功能在选择选项后立即运行

这是我到目前为止的代码

函数addRadiatedStatus(){
character.com=true;
}
常量textNodes=[
{
id:1,
文本:“你想帮助这个人吗?”,
选项:[
{
文本:“是”,
下一个文本:2
},
{
文本:“否”,
下一个文本:2
},
],
派系:“油脂工”
},
{
id:2,
文字:“这是一个陷阱,你是逃跑还是杀死他们?”,
选项:[
{
文本:“运行”,
下文本:3,
伤害:0,
},
{
文字:“杀死”,
下一个文本:5,
损失:8,
现金流:20,
辐射损伤:2,
函数:函数更新(){
if(character.greaser==true&&textNodes[1]。派系==
“润滑油工”){
控制台日志(“润滑脂检查工作”);
}
console.log(“upadte函数已工作”)
character.health-=this.damage;
character.cash+=this.moneyDrop;
character.radiationLevel+=此.radiationDamage;
character.maxHP-=this.radiationDamage;
如果(this.radiationDamage>=1){
addRadiatedStatus();
}
console.log(“字符HP”+“”+字符.health);
log(“character maxHP”+“”+character.maxHP);
log(“moneyDrop”+“”+this.moneyDrop);
log(“character cash”+“”+character.cash);
控制台.log(“辐射级别”+“”+字符.radiationLevel);
console.log(“字符辐射?”+“”+字符辐射);
}
}
],
派系:“油脂工”,
}
]

textNodes[1]。选项[1]。函数()您可以将此部分更改为:

update: (function(){
        console.log("upadte function worked")
        character.health -= this.damage;
        character.cash += this.moneyDrop;
        character.radiationLevel += this.radiationDamage;
        character.maxHP -= this.radiationDamage;
        if(this.radiationDamage >= 1 ){
            addRadiatedStatus();
        }
        console.log("character HP" + " " +  character.health);
        console.log("character maxHP" + " " +  character.maxHP);
        console.log("moneyDrop " + " " +  this.moneyDrop);
        console.log("character cash" + " " +  character.cash);
        console.log("radiation level" + " " +  character.radiationLevel);
        console.log("character Raditated?" + " " +  character.radiated);
    });
函数
关键字已更改为
更新
,然后该函数已更改为匿名函数。。。您应该避免在用户定义的关键字中使用js关键字。 那么匿名函数将不会执行,直到您调用它:

textNodes[1].options[1].update()

下面是我所说的一个例子: 这表明您必须实际访问函数和任何其他键才能访问值

var text=[
{
数据1:“这里”,
数据2:(函数(){
return“您必须明确地给我打电话!”
})
}
]
log(“不调用任何数据:+text[0])
console.log(“调用data2时:+text[0].data2())

console.log(“让我们访问data1:”+text[0].data1)
您可以将此部分更改为:

update: (function(){
        console.log("upadte function worked")
        character.health -= this.damage;
        character.cash += this.moneyDrop;
        character.radiationLevel += this.radiationDamage;
        character.maxHP -= this.radiationDamage;
        if(this.radiationDamage >= 1 ){
            addRadiatedStatus();
        }
        console.log("character HP" + " " +  character.health);
        console.log("character maxHP" + " " +  character.maxHP);
        console.log("moneyDrop " + " " +  this.moneyDrop);
        console.log("character cash" + " " +  character.cash);
        console.log("radiation level" + " " +  character.radiationLevel);
        console.log("character Raditated?" + " " +  character.radiated);
    });
函数
关键字已更改为
更新
,然后该函数已更改为匿名函数。。。您应该避免在用户定义的关键字中使用js关键字。 那么匿名函数将不会执行,直到您调用它:

textNodes[1].options[1].update()

下面是我所说的一个例子: 这表明您必须实际访问函数和任何其他键才能访问值

var text=[
{
数据1:“这里”,
数据2:(函数(){
return“您必须明确地给我打电话!”
})
}
]
log(“不调用任何数据:+text[0])
console.log(“调用data2时:+text[0].data2())

console.log(“让我们访问data1:”+text[0].data1)
我想您可能误解了,或者我的解释不正确。我不想同时使用
textNodes[1]…
,因为我不想调用函数,除非在游戏中选择了该选项,而且我不想添加每个调用textNode和选项的索引。我在函数中添加了编辑。我添加了一个if/else来检查问题的NPC阵营是否与玩家阵营相同。这导致我在自动调用函数时遇到了一个类似的问题,那就是试图避免手动添加索引。我花了几分钟的时间才完全理解您所说的内容,但我想我已经明白了——但我将坚持使用我的
update
而不是您的
function
关键字。您希望立即调用
update
中的函数,而无需访问它。据我所知,这是不可能的,因为函数是
选项
对象中的
。。。函数在被调用之前无法运行,而这只能通过手动访问它来实现——(这就像定义一个普通函数一样——你必须显式地调用它才能运行)查看上面编辑的答案中的代码片段,这解释了我的意思。我想你要么误解了,要么解释错了。我不想同时使用
textNodes[1]…
,因为我不想调用函数,除非在游戏中选择了该选项,而且我不想添加每个调用textNode和选项的索引。我在函数中添加了编辑。我添加了一个if/else来检查问题的NPC阵营是否与玩家阵营相同。这导致我在自动调用函数时遇到了一个类似的问题,那就是试图避免手动添加索引。我花了几分钟的时间才完全理解您所说的内容,但我想我已经明白了——但我将坚持使用我的
update
而不是您的
function
关键字。您希望调用
update
中的函数