Javascript 将代码转换为JS对象文字模式
我想开始编写更好的代码,并且我逐渐明白,将与特定功能相关的所有内容都放在对象中是一个好主意 编辑:我试图在@SoftwareEngineer171的回答中理解这个概念。现在我有这个:Javascript 将代码转换为JS对象文字模式,javascript,oop,audiocontext,Javascript,Oop,Audiocontext,我想开始编写更好的代码,并且我逐渐明白,将与特定功能相关的所有内容都放在对象中是一个好主意 编辑:我试图在@SoftwareEngineer171的回答中理解这个概念。现在我有这个: var app = { audioCtx : new(window.AudioContext || window.webkitAudioContext)(), init : function () { oscillator = app.audioCtx.createOscillat
var app = {
audioCtx : new(window.AudioContext || window.webkitAudioContext)(),
init : function () {
oscillator = app.audioCtx.createOscillator();
oscillator.type = 'square';
oscillator.frequency.value = 3000; // value in hertz
oscillator.start();
}
} // app object close
app.init();
但它不起作用。有人能解释为什么吗
我想将此代码用作应用程序的一部分,但放在对象文字中:
var context = new AudioContext(),
gainNode = context.createGain(),
oscillator = context.createOscillator();
gainNode.connect(context.destination);
oscillator.frequency.value = 440;
oscillator.connect(gainNode);
oscillator.start();
然而,当我尝试时,我遇到了上述那种问题
我希望代码以如下方式开始:
var app = {
context : new AudioContext(),
...
}
非常感谢您一如既往的帮助。您尝试做的不是一项特定的功能,但您可以通过多种方式来完成。例如,如果要编写以下对象
var obj = {
a: 5,
b: 7,
c: a + b
};
它将抛出一个ReferenceError
。为了避免这种情况,请按如下所示重写语法
var obj = {
a: 5,
b: 7,
init(){
this.c = this.a + this.b;
return this;
}
}.init();
您也可以使用类来完成它
var obj = new class{
constructor(){
this.a = 5;
this.b = 7;
this.c = this.a + this.b;
}
}();
甚至使用构造函数
var obj = new function(){
this.a = 5;
this.b = 7;
this.c = this.a + this.b;
}();
编辑
在您的情况下,音频上下文脚本如下所示(另请参见):
您试图做的并不是一项特定的功能,但可以通过几种方式来实现。例如,如果要编写以下对象
var obj = {
a: 5,
b: 7,
c: a + b
};
它将抛出一个ReferenceError
。为了避免这种情况,请按如下所示重写语法
var obj = {
a: 5,
b: 7,
init(){
this.c = this.a + this.b;
return this;
}
}.init();
您也可以使用类来完成它
var obj = new class{
constructor(){
this.a = 5;
this.b = 7;
this.c = this.a + this.b;
}
}();
甚至使用构造函数
var obj = new function(){
this.a = 5;
this.b = 7;
this.c = this.a + this.b;
}();
编辑
在您的情况下,音频上下文脚本如下所示(另请参见):
为什么?目的何在?“将与特定功能相关的所有内容放在对象中是个好主意”-不,不是。至少不是一般的。你还打算在哪里使用这三个变量中的任何一个?这是你的全部密码吗?你认为你会从一个
应用程序
对象中获得什么?我想使用一个应用程序对象,因为给出的代码只是一个更大的应用程序中很小但很重要的一部分。我试图遵循一些关于模块化编码的想法,例如:为什么?目的何在?“将与特定功能相关的所有内容放在对象中是个好主意”-不,不是。至少不是一般的。你还打算在哪里使用这三个变量中的任何一个?这是你的全部密码吗?你认为你会从一个应用程序
对象中获得什么?我想使用一个应用程序对象,因为给出的代码只是一个更大的应用程序中很小但很重要的一部分。我试着遵循一些关于模块化编码的想法,例如:我试着应用这种方法,并相应地编辑了我的问题。@Robin你的方法是错误的。请看我的答案,我添加了您要查找的确切代码。我已尝试应用此方法,并相应地编辑了我的问题。@Robin您的方法是错误的。请看我的答案,我添加了您要查找的确切代码。