原型链回调
Prototype chain callback
我有一个对象,它使用原型链调用一些异步函数:
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');
}
这是我创建的一个代码片段,用来模拟我的想法。
function Wow() {
this.ok = document.getElementById('ok');
this.wait();
}
Wow.prototype.wait = function() {
this.ok.innerHTML = "Waiting..."
window.setTimeout(function() {
this.completed();
}, 1000);
}
var wow = new Wow();
wow.completed = function() {
wow.ok.innerHTML = "Compelted";
};
#ok {
font-size: 28px;
color: red;
}
<div id="ok"></div>
我花了一个多小时在谷歌和StackOverflow上搜索解决方案,但我发现甚至很难找到它。
代码的问题是this
不是在嵌套函数中继承的。
这项工作:
Wow.prototype.wait = function() {
this.ok.innerHTML = "Waiting...";
var that = this;
window.setTimeout(function() {
that.completed();
}, 1000);
}
function Wow() {
this.ok = document.getElementById('ok');
this.wait();
}
Wow.prototype.wait = function() {
this.ok.innerHTML = "Waiting...";
var that = this;
window.setTimeout(function() {
that.completed();
}, 1000);
}
var wow = new Wow();
wow.completed = function() {
wow.ok.innerHTML = "Compelted";
};
#ok {
font-size: 28px;
color: red;
}
<div id="ok"></div>
您需要稍微更改wait
函数,当setTimeOut
运行代码时,this
不可用,因为该代码与上下文无关this
:
Wow.prototype.wait = function() {
var self = this;
this.ok.innerHTML = "Waiting..."
window.setTimeout(function() {
self.completed();
}, 1000);
}
工作样品——http://jsfiddle.net/4xcjhe8d/2/
相关文章:
- 将对象传递给原型回调
- javascript原型-添加回调
- 原型回调函数替换'这'价值
- 为什么任何对象原型都不用作 forEach 回调
- 使用原型时是否可以直接将类方法作为回调传递
- 将回调函数与原型函数一起使用
- 将回调函数传递给原型
- 如何避免 jquery 与原型的回调函数中的 $ 冲突
- 来自 ajax 回调的 Javascript(原型)方法调用
- 从回调中调用原型方法
- Javascript-如何保存对“;这个“;用于使用原型模式在命名函数回调中进行访问
- 原型链回调
- 在javascript中使用promise和原型时,优雅的回调绑定
- node-js原型对象'self'var没有为回调存储正确的上下文
- 将函数作为回调传递时原型出现问题
- 当使用原型方法声明从回调访问对象时,如何访问对象的其他方法
- 如何将原型上定义的方法作为回调传递给Array.map
- 设置“this"到实例,在创建原型函数期间的回调集中
- 这有什么不对吗?尝试在原型中使用请求回调,但收效甚微
- Javascript使用:in函数回调原型/在回调函数中传递数组