我有一个类Gadget
,其中一个方法consider
定义为:
function Gadget() {
this.consider = function (arg) {
alert(arg);
};
if ("WebSocket" in window) {
var ws = new WebSocket(...);
// the rest truncated
ws.onmessage = function (evt) {
consider(evt.data);
};
}
}
但是,我无法开始consider
工作,因为它以TypeError
.
Uncaught TypeError: Object #<Gadget> has no method 'consider'
如果我尝试this.consider
改用,TypeError
则会发生在WebSocket对象中。如果我尝试parent.consider
,那么Object对象会给我同样的错误。
现在我的解决方法是使用声明实例中的方法,如:
var player = new Gadget();
而是用player.consider(evt.data)
。我不喜欢这样做,但它有效。如何重新排列代码,使其不依赖于已定义的对象实例?