所以我在 Chrome 中遇到了一个可怕的非法调用错误。我正在使用 Web Audio API(顺便说一句,HTML5 很棒)来构建音频效果和信号路由的框架。基本上,它会根据节点在数组中的位置自动路由节点。但是我为复杂的效果或模块包含了我自己的类/对象。它们内部有多个节点,并且可以指定去哪里,就好像它是单个输入/输出节点一样。
无论如何,当创建对象时,它会在节点创建点(模块中的私有节点)引发错误。我已经读过很多关于控制台发生的事情,或者失去了固有的“这个”。但是我不知道为什么会发生在这里,因为获取节点构造函数的变量是全局变量。有任何想法吗?
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)
节点构造函数,但没有运气