我有這樣的代碼:this.set不是函數
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)
與ws2812
只有這樣,才能更換this
解決這個問題?
您是否將未綁定的'speech'函數作爲回調函數傳遞?請在您的示例中包含*失敗的代碼。 – zzzzBov