在javscript中,this 是在函數運行時自動生成的一個內部指針,它指向函數的調用者。 箭頭函數有些不同,它的this是繼承而來, 預設指向在定義它時所處的對象(宿主對象),而不是執行時的對象。 如上getName3(),將箭頭函數作為直接執行的方法來寫時要特別小心,它的this會直接指向wi ...
在javscript中,this 是在函數運行時自動生成的一個內部指針,它指向函數的調用者。
箭頭函數有些不同,它的this是繼承而來, 預設指向在定義它時所處的對象(宿主對象),而不是執行時的對象。
var name = "window"; var test = { name:"demo", // 傳統函數 getName1: function(){ console.log(this.name); // demo var that = this; setTimeout(function(){ console.log(this.name); // window console.log(that.name); // demo },500) }, // 箭頭函數-作為非同步回調 getName2:function(){ setTimeout(()=>{ console.log(this.name) // demo },500) }, // 箭頭函數-作為直接執行的方法 getName3:()=>{ console.log(this.name) // window } };
如上getName3(),將箭頭函數作為直接執行的方法來寫時要特別小心,它的this會直接指向window。