這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 var length = 10; function fn () { return this.length + 1; } var obj = { length: 5, test1: function () { return fn(); } ...
這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助
var length = 10; function fn () { return this.length + 1; } var obj = { length: 5, test1: function () { return fn(); } } obj.test2 = fn; console.log(obj.test1()); // 11 console.log(fn() === obj.test2()); // false
看上面這段代碼,這就是位元組面試官準備的一道面試題,在面試過程中答得不是很好也沒有完全做對。主要還是由於前兩道題答得不是很好影響到後面答這道題時大腦是懵逼狀態,再加上緊張讓自己一時不知道這道題的考點是什麼,進而影響到後續的面試狀態。
其實這題不難,就是考JS
中的基礎:this的指向問題,也就是這篇文章要聊的主題。
this的原理
this指向的值總是取決於它的執行環境。執行環境是代碼執行時當前的環境或者作用域,在運行時,JavaScript
會維護一個執行環境棧;最頂部的那個是調用時所使用的執行環境,當執行環境變化時,this
的值也會改變。
其實理解this
的指向是非常重要的,至少它能讓你在實際開發中少走彎路,少寫bug,從而更好地掌握JavaScript
這門語言。接下來將從一些慄子