Javascript 强制具有变量的对象属性重新计算值
我有一个对象,它的属性是通过Howler.js库加载声音样本 样本路径的一部分是通过模式变量确定的,该变量可以是A、B、C等所有有效文件夹,其中包含名称相同但声音略有不同的声音样本Javascript 强制具有变量的对象属性重新计算值,javascript,jquery,object,dom,audio,Javascript,Jquery,Object,Dom,Audio,我有一个对象,它的属性是通过Howler.js库加载声音样本 样本路径的一部分是通过模式变量确定的,该变量可以是A、B、C等所有有效文件夹,其中包含名称相同但声音略有不同的声音样本 var mode = "A"; $("html").on("keydown", function(e){ if(e.keyCode === 32) { switch (mode) { case "A": mode = "B";
var mode = "A";
$("html").on("keydown", function(e){
if(e.keyCode === 32) {
switch (mode) {
case "A":
mode = "B";
break;
case "B":
mode = "C";
break;
.
.
.
default:
mode = "A";
}
}
dict["coolSound"].sound.play();
});
// Seperate file
var dictionary = {
coolSound: {
sound: new Howl({
src: ["sounds/" + mode + "/bubbles.mp3"]
})
};
通过按键,我将模式变量更改为下一个字母。
但是,播放的声音是生成的原始声音
我试着让它调用一个设置声音的函数,但这也不起作用
我在主dictionary对象中有多个这样的对象和属性。有没有一种方法可以在不手动循环的情况下更新属性?没有,您在代码开头设置的属性只是一个字符串,它不记得它是由字符串、变量和字符串组成的 您可以使用函数而不是字符串值。例如:
var dictionary = {
coolSound: {
sound: function (mode) {
return new Howl({src: ["sounds/" + mode + "/bubbles.mp3"]});
}
}
}
然后,在keydown处理程序中,您可以执行以下操作:
dict["coolSound"].sound(mode).play();
不,您在代码开头设置的属性只是一个字符串,它不记得它是由字符串、变量和字符串组成的 您可以使用函数而不是字符串值。例如:
var dictionary = {
coolSound: {
sound: function (mode) {
return new Howl({src: ["sounds/" + mode + "/bubbles.mp3"]});
}
}
}
然后,在keydown处理程序中,您可以执行以下操作:
dict["coolSound"].sound(mode).play();
你能把密码贴在你叫按键改变模式的地方吗?“我想我只是少了一点时间来破解这个。”凯文补充道,谢谢!你能把密码贴在你叫按键改变模式的地方吗?“我想我只是少了一点时间来破解这个。”凯文补充道,谢谢!