面向对象Javascript回调
我真的很难理解这个概念,我想如果我在自己的代码中看到它,它可能会点击。我真的希望在保持面向对象方法的同时利用回调函数。谢谢你能提供的任何帮助面向对象Javascript回调,javascript,oop,callback,asynccallback,Javascript,Oop,Callback,Asynccallback,我真的很难理解这个概念,我想如果我在自己的代码中看到它,它可能会点击。我真的希望在保持面向对象方法的同时利用回调函数。谢谢你能提供的任何帮助 //adds functionality to buttons addClickEvent(newDataCollect,function() {addClickEvent(dataSubmitBtn, function(){testAjax(dataForm.elements);}); function addClickEven
//adds functionality to buttons
addClickEvent(newDataCollect,function() {addClickEvent(dataSubmitBtn, function(){testAjax(dataForm.elements);});
function addClickEvent(elem,click,addtl) {
var nwClickEvent = new elemEvents(elem,click,addtl);
nwClickEvent.onClick();
}
//add click event object & properties
function elemEvents(elem,click,addtl) {
this.elem = elem;
this.click = click;
this.addtl = addtl;
}
//add click event object method
elemEvents.prototype = {
onClick: function() {this.elem.onclick = this.click;}
}
是的,我想说您已经在使用回调:
//add click event object & properties (constructors should be PascalCase)
function ElemEvents(elem,click,addtl) {
this.elem = elem;
// `click` should be a function, and as such, a callback that is called when the element is clicked
this.elem.onclick = click;
this.addtl = addtl;
}
// later:
var e = new ElemEvents(
// the `elem`
document.getElementById("id"),
// this is the callback.
function (event) {
console.log("hi from event: " + event);
},
// the `addtl`.
"");
这里需要记住的一点是回调不一定是异步的。在本例中,您定义了一个onClick处理程序,该处理程序将在用户在将来某个时候单击某个对象时运行。这是异步的,但是考虑如下:
function log(/* .. */){ // can be any arguments, we're just .apply'ing log with arguments
console.log.apply(console, arguments)
}
function logThen(done /* .. */) { // takes a callback as first argument, then vals to log
var args = [].splice.call(arguments, 1); // calls splice on the arguments, removing the CB, and returning whatever you had left
console.log.apply(console, args);
if (done && typeof done === 'function'){
done();
}
}
log(1);
log(2);
log(3);
logThen(alert, 4);
log(5);
log(6);
输出将是:
1
2
3
4 // shows an alert, then continues with..
5
6
这都是同步代码-没有任何东西被推到下一个调用堆栈上,因此它会执行所有操作,包括在本例中同步执行回调警报
只是稍微抬起头 对不起,您有什么问题?我想使用回调函数,但不知道如何使用。也许我已经在做了?谢谢!读了这篇文章后,一切都很顺利,实现也很成功。