1. 程式人生 > 其它 >js this 指向 問題小結

js this 指向 問題小結

  function name() {             var a = "A";             console.log(this.a); //undefined  如果a 在函式體外,則結果是A             console.log(this); //Window         };         name();    相當於 window.name()     var n = {             name: "LonJin",             fn: function() {                 console.log(this.name) //LonJin   誰呼叫指向誰             }         };         n.fn();       var n = {             name: "LonJin",             fn: function() {                 console.log(this.name) //LonJin             }         };         window.n.fn();     永遠指向最近的一層,這裡this指向n      var n = {             a: 10,             b: {                 a: 12,                 fn: function() {                     console.log(this.a) //12 永遠指向最近的一層  如果b 沒有a 屬性,這裡會顯示undefine                 }             }         };         n.b.fn();        //當有return 的時候      //如果返回值是一個物件,那麼this指向的就是那個返回的物件,如果返回值不是一個物件那麼this還是指向函式的例項。         function fn() {             this.user = "LonJin";             return {}         };         var a = new fn();         console.log(a.user); //undefined
        function A() {             this.name = name             return {                 name: 10             }         }         const b = new A()         console.log('b', b); // 10               //這裡的 指的是return 的函式         var x = 20;         var a = {                 x: 15,                 fn: function() {                     console.log(this);                     var x = 30;                     return function() {                         return this.x                     }                 }             }             console.log((a.fn())()); //立即執行函式this 指向window  20         console.log(a.fn()()) //這相當於function(){}() 也是立即執行函式 //20         console.log(a.fn().call(this)) //20         console.log(a.fn().call(a)) //15