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);
}

工作示例--

将实际上下文放入问题中。外部代码中的问题与这里代码中的问题完全不同。是否使用原型并不重要。这是关于在调用回调时获取错误的
上下文。有时,您过于关注您认为的问题,以至于忽略了真正的问题。我很抱歉重复这个问题。