在 Javascript 个对象中使用 HTML5 个音频
Using HTML5 Audio in Javascript Objects
当我运行以下...
var obj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
audio: new Audio(this.array[0])
};
...我收到一条错误消息,指出它无法读取未定义的 属性 '0'。但是,当我 运行 以下...
var obj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
};
var audio = new Audio(this.obj.array[0]);
...一切 运行 都很顺利。我将如何修复第一个示例? this
我是不是做错了什么?
How would I fix the first example? Am I doing something wrong with this
?
你不能。对象 尚未创建 ,因此您无法使用 this
引用 属性
但是您可以这样做
var obj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
}; // object now created
obj.audio = new Audio(this.obj.array[0]); // set the property.
请注意,您可以参考 this
来参考 obj
内部 功能,但不能外部。
var obj = {
prop: (console.log(this), "Some value") // most probably Window but never obj
func: function(){
console.log(this); // obj
}
}
问题是在构造函数内部使用 this
:它不是指 obj
,而是指新的 Audio 对象。您将无法像那样从对象内部使用 this
引用它。
做同样事情的另一种方法如下:
var refArray = ['1.mp3', '2.mp3', '3.mp3'];
var myObj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
audio: new Audio(this.obj.array[0]);
};
这与其他答案中所述的相同,但允许您在定义 myObj 变量时添加音频对象(作为 属性 到 myObj)。
当我运行以下...
var obj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
audio: new Audio(this.array[0])
};
...我收到一条错误消息,指出它无法读取未定义的 属性 '0'。但是,当我 运行 以下...
var obj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
};
var audio = new Audio(this.obj.array[0]);
...一切 运行 都很顺利。我将如何修复第一个示例? this
我是不是做错了什么?
How would I fix the first example? Am I doing something wrong with
this
?
你不能。对象 尚未创建 ,因此您无法使用 this
但是您可以这样做
var obj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
}; // object now created
obj.audio = new Audio(this.obj.array[0]); // set the property.
请注意,您可以参考 this
来参考 obj
内部 功能,但不能外部。
var obj = {
prop: (console.log(this), "Some value") // most probably Window but never obj
func: function(){
console.log(this); // obj
}
}
问题是在构造函数内部使用 this
:它不是指 obj
,而是指新的 Audio 对象。您将无法像那样从对象内部使用 this
引用它。
做同样事情的另一种方法如下:
var refArray = ['1.mp3', '2.mp3', '3.mp3'];
var myObj = {
array: ['1.mp3', '2.mp3', '3.mp3'],
audio: new Audio(this.obj.array[0]);
};
这与其他答案中所述的相同,但允许您在定义 myObj 变量时添加音频对象(作为 属性 到 myObj)。