【发布时间】:2015-08-30 04:10:07
【问题描述】:
我有这样的代码:
var ws2812 = {};
ws2812.set = function(r,g,b){
$.get( "/light?r="+r+"&g="+g+"&b="+b, function( data ) {
console.log("Light set to:"+"/light?r="+r+"&g="+g+"&b="+b);
})
};
ws2812.speech = function(word){
switch(word){
case "czerwone":
this.set(255,0,0);
break;
case "zielone":
this.set(0,255,0);
break;
case "niebieskie":
this.set(0,0,255);
break;
case "białe":
this.set(255,255,255);
break;
default:
this.set(0,0,0);
break;
}
}
在控制台中运行ws2812.speech(""); 时,一切正常。但是,当与 Annyang 库配对时,我得到了:
Uncaught TypeError: this.set is not a function
ws2812.speech @ script.js:29
b.annyang.init.d.onresult @ annyang.min.js:6
怎么了?
[编辑]
命令是这样添加的:
annyang.addCommands({"ustaw *term światło":ws2812.speech});
具体来说,在 annyang 内部,这条线失败了:
f[h].callback.apply(this,m)
将this 替换为ws2812 是解决此问题的唯一方法吗?
【问题讨论】:
-
您是否将未绑定的
speech函数作为回调传递?请在您的示例中包含失败的代码。
标签: javascript annyang