哎呀,是我想多了好像,我运行回调函数,和调用test 方法似乎是一个道理 。。。呃
嗷嗷,好像是我想多了,和调用函数应该是一个道理,fun其实只是报存了对方法的指针,方法在堆中。
为什么js回调函数依然可以调用定义时用到的变量
var that = this;
var test = function () {
console.log(that);
}
var page = function(fun) {
fun();//运行回调函数
test();//运行test函数
}
var xiaoming = {
name : '小名',
watch() {
let that = this;
//向page传递我的回调函数
page(function(){
console.log(that);
})
}
}
xiaoming.watch();
test函数 和 往page里面传递的回调函数 一样的代码
page中运行 回调函数 和 test函数
那么问题来了
为什么 test()//打印出window,我知道
但是为什么同样的代码
function(){
console.log(that);
}
回调函数 能打印出 xiaoming 这个对象
运行 回调函数 的方式是有什么特别的地方吗?
我目前的理解是,当我把函数作为参数传递到另一个函数的时候, 会把我的作用域一起传递,
page(function(){
console.log(that);
})
会把 that也以前传递吗。。。
我好蒙蔽呀
相关分类