我有这个问题,我希望能够根据浏览器更改正在使用的音频。我所拥有的是一个下面看到的对象,它有一个“ext:{sound:'。mp3'}”,在某些时候我会在浏览器之间做出一些区分然后使用类似“object.ext.sound ='.ogg'之类的东西“根据正在使用的浏览器设置新的声音类型。如何从对象中引用该变量,例如“StAd0”?
var object = {
ext: {
sound: '.mp3'
},
pref: {
acc: 1
},
StAd0: {
from: 25,
to: 180,
src: 'ar/55871'+ this.ext.sound,
du: 5228
},
Image_33: {
type: 15,
from: 4,
to: 48,
rp: 0,
rpa: 0,
mdi: 'Image_33c',
trin: 6,
trout: 6,
ef: {}
},
Image_33c: {
b: [171, 259, 850, 360],
ip: 'dr/7029_679_101.png',
dn: 'Image_33',
visible: 1,
accstr: 'Image ',
vb: [171, 259, 850, 360]
}
}
我现在拥有的方式一直在说“this.ext.sound”的值为“undefined”。我当时认为它与范围有关但老实说我很难过,我觉得我已经尝试了点符号的每一种组合来试图获得属性,但我只是没有正确引用属性。
非常感谢任何帮助,提前谢谢!
答案 0 :(得分:2)
你想做什么是不可能的。
必须先初始化对象,然后才能将其值引用到
你可以在对象中使用一个函数。
或将StAd0.src
的初始值更改为''
或'ar/55871'
,然后在将var object;
设置为object.StAd0.src = 'ar/55871'+ object.ext.sound;
答案 1 :(得分:0)
然后src必须是一个函数。
var object = {
ext: {
sound: '.mp3'
},
pref: {
acc: 1
},
StAd0: {
from: 25,
to: 180,
src: function() {
return 'ar/55871'+ this.ext.sound;
},
du: 5228
},
Image_33: {
type: 15,
from: 4,
to: 48,
rp: 0,
rpa: 0,
mdi: 'Image_33c',
trin: 6,
trout: 6,
ef: {}
},
Image_33c: {
b: [171, 259, 850, 360],
ip: 'dr/7029_679_101.png',
dn: 'Image_33',
visible: 1,
accstr: 'Image ',
vb: [171, 259, 850, 360]
}
}
但你必须得到像这样的src,
object.stAd0.src();
没有功能就没有这样做,因为如果你这样尝试,
src: ar/55871+ this.ext.sound;
只能在解析时使用一次。比它内部有一个静态值。
如果你不能改变所有src属性的功能,你也可以这样做。
var src = (typeof object.StAd0.src == "function")? object.StAd0.src() : object.StAd0.src;
因此,如果将src定义为函数,它将调用它,否则将其视为属性。
答案 2 :(得分:-3)
这应该有用,试一试:
var object = {
ext: { sound: '.mp3' },
StAd0: { src: 'ar/55871'+ object.ext.sound }
}