所以我在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)
添加到节点构造函数中而没有运气