国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript中的this陷阱的最全收集并整理(沒有之一)

2024-05-06 15:11:03
字體:
來源:轉載
供稿:網友

當有人問起你JavaScript有什么特點的時候,你可能立馬就想到了單線程、事件驅動、面向對象等一堆詞語,但是如果真的讓你解釋一下這些概念,可能真解釋不清楚。有句話這么說:如果你不能向一個6歲小孩解釋清楚一個東西,那么你自己也不懂這個東西。這句話或許有點夸張,但是極其有道理。個人覺得,如果需要掌握一門語言,掌握它的API只是學了皮毛,理解這門語言的精髓才是重點。提及JavaScript的精髓,this、閉包、作用域鏈、函數是當之無愧的。這門語言正式因為這幾個東西而變得魅力無窮。

  博客的標題是《JavaScript中的this陷阱的最全收集--沒有之一》,很顯然這篇博客闡述的是this。相信做過JavaScript開發的人都遇到過不少this的陷阱,我自己本身也遇到過不少坑,但是如果非要給出一個系統的總結的話,還沒有足夠的底蘊。非常幸運的是,今天早上起來看《Hacker News》的時候,恰巧看到了一篇有關于JavaScript this的解析:all this。于是,本著學習和共享的精神,決定將它翻譯成中文。翻譯的目的絕對不是為了當大自然的搬運工,在這個過程中會完全弄明白別人的著作,加深認識,同時將好東西分享給別人,才能讓更多的學習者站在巨人的肩膀上前進。按照我自己的習慣,會翻譯的過程中加上一些自己解釋(引用部分),畢竟中西方人的思考方式是有差異的。當然文章標題所述的最全也不是吹的,文章非常長。

JavaScript來自一門健全的語言,所以你可能覺得JavaScript中的this和其他面向對象的語言如java的this一樣,是指存儲在實例屬性中的值。事實并非如此,在JavaScript中,最好把this當成哈利波特中的博格特的背包,有著深不可測的魔力。

  下面的部分是我希望我的同事在使用JavaScript的this的時候應當知道的。內容很多,是我學習好幾年總結出來的。

JavaScript中很多時候會用到this,下面詳細介紹每一種情況。在這里我想首先介紹一下宿主環境這個概念。一門語言在運行的時候,需要一個環境,叫做宿主環境。對于JavaScript,宿主環境最常見的是web瀏覽器,瀏覽器提供了一個JavaScript運行的環境,這個環境里面,需要提供一些接口,好讓JavaScript引擎能夠和宿主環境對接。JavaScript引擎才是真正執行JavaScript代碼的地方,常見的引擎有V8(目前最快JavaScript引擎、Google生產)、JavaScript core。JavaScript引擎主要做了下面幾件事情:

一套與宿主環境相聯系的規則; JavaScript引擎內核(基本語法規范、邏輯、命令和算法); 一組內置對象和API; 其他約定。

但是環境不是唯一的,也就是JavaScript不僅僅能夠在瀏覽器里面跑,也能在其他提供了宿主環境的程序里面跑,最常見的就是nodejs。同樣作為一個宿主環境,nodejs也有自己的JavaScript引擎--V8。根據官方的定義:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 敦化市| 青河县| 大余县| 邯郸市| 大埔区| 永吉县| 曲靖市| 长泰县| 中方县| 林州市| 顺昌县| 临夏市| 郁南县| 微山县| 达日县| 常州市| 新兴县| 镇远县| 九台市| 固始县| 图木舒克市| 舒城县| 北碚区| 宝坻区| 桦南县| 右玉县| 吉木萨尔县| 郁南县| 绍兴市| 法库县| 彩票| 水富县| 正镶白旗| 泗洪县| 宁陕县| 泸西县| 剑阁县| 云浮市| 临漳县| 上林县| 航空|