第一张图的obj.fn2();为什么是window,直接在对象里传fn2和fn()有什么区别





 var obj = {
            fn1:function() {
                console.log(this); 
            },
            fn2:function(){
                fn3() 
            }
        }
        function fn3() {
            console.log(this); 
        }
        fn3();//this->window
        obj.fn1();//this->obj
        obj.fn2();//this->window


var f = function () {
  console.log(this.x);
}

var x = 1;
var obj = {
  f: f,
  x: 2,
};

// 单独执行
f() // 1

// obj 环境执行
obj.f() // 2


谁能解释一下,第一张图的obj.fn2();为什么是window,直接在对象里传fn2和fn()有什么区别

把原型链的关系图看懂,这个就很清晰了

img