Javascript 原型链回调
我有一个使用原型链调用一些异步函数的对象:Javascript 原型链回调,javascript,Javascript,我有一个使用原型链调用一些异步函数的对象: function Wow() { this.myAsyncFunction(); } Wow.prototype.myAsyncFunction = function() { // Once my async function is complete, I fire a callback this.completed(); // Does not work } 我想这样使用它: var wow = new Wow(); wow.comp
function Wow() {
this.myAsyncFunction();
}
Wow.prototype.myAsyncFunction = function() {
// Once my async function is complete, I fire a callback
this.completed(); // Does not work
}
我想这样使用它:
var wow = new Wow();
wow.completed = function() {
alert('Awesome');
}
下面是我创建的一个代码片段,用于模拟我的想法
函数Wow(){
this.ok=document.getElementById('ok');
这个。等等();
}
Wow.prototype.wait=函数(){
this.ok.innerHTML=“正在等待…”
setTimeout(函数(){
这个。已完成();
}, 1000);
}
var wow=新wow();
wow.completed=函数(){
wow.ok.innerHTML=“compelled”;
};代码>
#好的{
字号:28px;
颜色:红色;
}
您的代码的问题是这个
不是在嵌套函数中继承的
这项工作:
Wow.prototype.wait = function() {
this.ok.innerHTML = "Waiting...";
var that = this;
window.setTimeout(function() {
that.completed();
}, 1000);
}
函数Wow(){
this.ok=document.getElementById('ok');
这个。等等();
}
Wow.prototype.wait=函数(){
this.ok.innerHTML=“等待…”;
var=这个;
setTimeout(函数(){
已完成();
}, 1000);
}
var wow=新wow();
wow.completed=函数(){
wow.ok.innerHTML=“compelled”;
};代码>
#好的{
字号:28px;
颜色:红色;
}
您需要稍微更改等待
功能,此
在设置超时
运行代码时不可用,因为该代码与上下文无关此
:
Wow.prototype.wait = function() {
var self = this;
this.ok.innerHTML = "Waiting..."
window.setTimeout(function() {
self.completed();
}, 1000);
}
工作示例--将实际上下文放入问题中。外部代码中的问题与这里代码中的问题完全不同。是否使用原型并不重要。这是关于在调用回调时获取错误的此上下文。有时,您过于关注您认为的问题,以至于忽略了真正的问题。我很抱歉重复这个问题。