直接上代码:
var c = 1, fn = { c: 2, f: function(){ console.info(this.a) //返回什么? setTimeout(function(){alert(this.c)},1000) //返回什么? } }; fn.f() //返回什么? var b = t.f; b.call() //返回什么? function c(arg){ arg.call() //返回什么? console.info(c,this) //返回什么?c(arg) 和 function() ? } c.call(b) //返回什么? c.fn = function(){alert(this.mm)} var m = {mm:2}; c.fn.call(m) //返回什么? c.fn.apply(m) //返回什么?
在js中this主要区别是不是this所在作用域,而是调用它的那个对象的范围。