<script type="text/javascript">
function a() {
div1.innerHTML += "a"
}
function b() {
div1.innerHTML += "b"
}
var div1
window.onload = function () {
div1 = document.getElementById("div1")
setTimeout("a()", 3000)
b()
}
</script>
输出结果是:ba
如果改成这样:
<script type="text/javascript">
function a(callback)
{
div1.innerHTML += "a"
callback()
}
function b(){
div1.innerHTML+="b"
}
var div1
window.onload = function () {
div1 = document.getElementById("div1")
setTimeout("a(b)", 3000)
}
</script>
输出结果就是:ab
callback是回调函数。函数有call和apply方法。可以在函数执行时动态的绑定上下文。因为你这里callback.call()没有传入任何参数。因此callback.call()跟callback()是等价的。没有任何不同。
函数的上下文主要影响函数中的this对象。
正常情况下this对象是根据运行上下文自动指定的。
但是用call方法或者apply方法可以手动设置上下文。相当于可以随意调整函数中的this对象指向谁。