var num = 20;
var obj = {
num :30,
fn:(function (num) {
this.num *=3;
num+=15;
var num = 45;
return function () {
this.num*=4;
num+=20;
console.log(num);
}
})(num)
};
obj.fn();
fn执行的之后,这里面的this把我搞晕了?求大神解释一下。
好像如果变成var fn = obj.fn;fn();这样,this又会变
this的指向总是指向调用者,因为IIFE的调用者是window,所以上面的第一个this不会改变,第二个this取决于你调用的方式,如果采用obj.fn();这种方式,则this指向obj; 如果采用var fn = obj.fn;fn();这种方式,相当于window.fn();this指向window