Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Web音频API在对象内进行非法调用_Javascript_Html_Oop - Fatal编程技术网

Javascript 使用Web音频API在对象内进行非法调用

Javascript 使用Web音频API在对象内进行非法调用,javascript,html,oop,Javascript,Html,Oop,所以我在Chrome中遇到了一个可怕的非法调用错误。我正在使用Web音频API(HTML5是很棒的btw),来构建音频效果和信号路由的框架。基本上,它会根据节点在阵列中的位置自动路由节点。但我包含了我自己的类/对象,用于复杂效果或模块。它们内部有多个节点,可以像单个输入/输出节点一样对去往何处的内容进行隔离 无论如何,当创建对象时,它会在节点创建点(模块中的私有节点)抛出错误。我读过很多关于console发生这种情况,或者说失去了固有的“this”。但我不知道为什么会发生在这里,因为获取节点构造

所以我在Chrome中遇到了一个可怕的非法调用错误。我正在使用Web音频API(HTML5是很棒的btw),来构建音频效果和信号路由的框架。基本上,它会根据节点在阵列中的位置自动路由节点。但我包含了我自己的类/对象,用于复杂效果或模块。它们内部有多个节点,可以像单个输入/输出节点一样对去往何处的内容进行隔离

无论如何,当创建对象时,它会在节点创建点(模块中的私有节点)抛出错误。我读过很多关于console发生这种情况,或者说失去了固有的“this”。但我不知道为什么会发生在这里,因为获取节点构造函数的变量是一个全局变量。有什么想法吗

var context, nodes;

var Delay = function(_context, _time, _feedback, _wet) {
   this.type = "Delay";

   this.delay = new context.createDelayNode(); //Console points error here.
   this.feedback = new context.createGainNode();
   this.crossfade = new context.createGain();        
}

function GotStream(stream) {
   context = new AudioContext();
   nodes = [ new Delay(1,1,1) ]; //Start point of error
   ...
}

很明显,它被剥离了一点,但这就是函数/变量的精确嵌套。我应该注意到,我已经尝试将
.call(window)
.bind(window)
添加到节点构造函数中,但运气不佳

我对音频API一无所知,但它不应该是createDelay而不是createDelayNode吗?看,它实际上是双向的。但我所做的一切都不管用。我甚至尝试过用一个方法来包装它,但运气不好。你确定那些方法应该用
new
调用吗?是的,它们是构造函数。这就是为什么我不能将bind附加到它们的末端。从那以后,它说
uncaughttypeerror:function bind(){[native code]}不是构造函数
我想它不应该被用作构造函数。一旦您这样使用它,您就在构造函数代码中强制使用了错误的
this
值。