var num = 10;
var obj = {
num:20
}
// 遇到立即执行就立即执行 立即执行中的this指向window
obj.fn = (function(num){
// console.log(this);
this.num = 3*num; // 3*20 因为此时绑定的就是20(obj.num)
// num被return的函数所引用 所以不会被销毁 一直在内存中保留结果
num++;
// console.log("first");
// console.log(this)
// fn真正的值 this随之会改变
return function(n){
// console.log(this)
this.num+=n;
num++;
console.log(num);
}
})(obj.num)
var fn = obj.fn;
obj.fn(10);
// console.log(obj.fn)
fn(5);
fn(6);
console.log(num,obj.num)