日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

为什么 JavaScript 的 this 要这么用?

發布時間:2024/4/17 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么 JavaScript 的 this 要这么用? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計算機世界最聰明的地方就在于它是人為的,最愚蠢的地方也正在于此。
——我瞎寫的

已經有太多學習前端的人困于這個無聊的概念了。JavaScript 本就是脫胎于 Java 和 C 的語言,所以這個概念大概只能從 Java 得出。由于 Java 是純粹的面向對象語言,this用來指代當前的類實例。而 JavaScript 先天缺乏 OO 的概念,所以可以說this被異化了。因為 JavaScript 是一等函數,函數本身就是和類同樣的存在,這樣一來其外部調用環境是完全不確定的。所以這將得到規范里的一條約定:

The this keyword evaluates to the value of the ThisBinding of the current execution context.

這說明this綁定的是上下文(而不是作用域,因為上下文是動態的)。我之前看到了別人的文章從規范的角度去看這個問題:
github.com/mqyqingfeng…

但總覺得差點意思。畢竟規范是設計的結果,而不是設計的過程。所幸阮一峰老師在去年剛寫了一篇文章來從我更欣賞的角度分析這個問題:
www.ruanyifeng.com/blog/2018/0…

他指出了一個關鍵是,一等函數相當于直接指向內存的函數指針。這可以解釋另一個例子:

var value = 1;var foo = {value: 2,bar: function () {return this.value;} } console.log((false || foo.bar)()); // 1 復制代碼

此時 foo.bar 其實已經被計算(evaluate)了,所以相當于直接于調用一等函數。


PS:這里一等函數是為了說明那些函數可以單獨運行而不需要從類進行訪問。

總結

以上是生活随笔為你收集整理的为什么 JavaScript 的 this 要这么用?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。