JS檔案揭秘 第四集 關於this的討論到此為止

2022-01-10 09:23:43 字數 882 閱讀 2898

網上關於this的指向問題的部落格文章很多,但大多數都是複製貼上,也不能用簡潔的語言講清楚,而是不停地寫一些示例,看得人雲裡霧裡。

其實關於this的指向並不難,只是沒有人去做乙個好的總結和試驗,導致這個問題莫名其妙被複雜化了。

這一集,我只給出結論,以及判定的通用方法,至於是否確實如我所講,大家可以自行驗證。

畫圖理解

假設我們現在有乙個函式foo,要判斷其中this的指向,可以根據下圖來分析:

對於箭頭函式,需注意,首先箭頭函式其實是沒有 this 的,箭頭函式中的 this 只取決包裹箭頭函式的第乙個普通函式的 this。如果往上級找一直沒找到包裹它的普通函式,那麼該箭頭函式中的this指向全域性物件。在瀏覽器中,全域性物件當然就是window;

第二步,對於普通函式來說,又分兩種情況:是被當作構造函式呼叫,還是被當作普通函式呼叫

如果是通過new關鍵字對其進行例項化,也就是把這個函式當作建構函式使用,那麼this恆指向例項化後的物件,此時的this是乙個位址指標,指向例項化過程中在堆記憶體新開闢的用於儲存例項化物件的那一塊空間;

如果是當作普通函式呼叫,那麼誰呼叫它,this就指向誰。有一種情況是類似於foo()這樣的呼叫,在瀏覽器中其實這相當於window.foo()。所以呼叫者為全域性物件window,this便指向window。

當然,有時候會出現混合呼叫的情況,這時候就需要根據優先順序來決定,優先順序排名如下:

彙編第四集

第四集彙編 段表 gdt ldt gdt 全域性段描述符表 本身放在gdtr這個暫存器 ldt leal src,dest 計算乙個位址放到dest裡面 位址計算指令 編譯器用lea來計算位址,不會真的像上面的那樣去計算。我的圖呢?上面顯示的是常用的雙運算元指令 addl subl imill sa...

孝莊秘史第四集

努爾哈赤吃力地 你仔細聽著,阿巴亥。我要把 大金國的汗位 傳給 話還沒說完,努爾哈赤突然兩眼圓睜,嘴一張又吐出一口鮮血,昏迷過去。深夜,整個瀋陽城萬籟寂靜,人們都在熟睡。除了夜行人引起的幾聲犬吠,就了無聲息了。然而,四貝勒府的寢室裡卻還亮著燈。皇太極站在衣櫃前神色憂鬱,他不知重病之下的父親會傳位於誰...

智力題(第四集)

第一題 3顆星 有乙個瓶子裡面有a細菌1個,b細菌30個,每過一分鐘,每個a細菌就吞噬乙個b細菌,同時a細菌 與b細菌又都 成原來數目的兩倍。第一分鐘a先吞掉乙個b細菌,然後a 成兩個細菌,b 成58個細菌。問 在第幾分鐘時b細菌會被a細菌全部吞噬掉?答案 30。分析 1.當a吞噬掉乙個b之後,會產...