極客時間出品的《JavaScript核心原理解析》由周愛民所作,周愛民是《JavaScript語言精髓與程式設計實踐》作者,南潮科技(Ruff)首席架構師。本專欄講重構你對JavaScript語言的認知。
訂閱須知
本專欄為訂閱專欄,更新時間為2019年11月11日至2019年12月27日。訂閱成功後,即可透過“極客時間”App端、小程式端、Web端永久閱讀。本專欄更新時間為每週一、三、五,形式為圖文+音訊,共計21期,定價68元。
《JavaScript核心原理解析》課程簡介
在Web世界中,能跨平臺、跨瀏覽器驅動網頁,與使用者互動的只有JavaScript,它的流行無需多言。但同時,JavaScript也是一門飽受爭議的語言。在學習JavaScript的過程中,你很可能聽說過這樣的論斷:
JavaScript的流行是一群精神病人的狂歡!
JavaScript是不成熟的語言!
JavaScript有N多設計缺陷!
JavaScript的繼承是最糟糕的特性!
面試官:你覺得JavaScript是一門語言?
這些論斷無一正確,卻實在是抓人眼球。無數人迷失於JavaScript,很可能是因為他們從來都只是被要求“寫程式碼”,卻從未去真正瞭解過“什麼是語言”。
而這個專欄將以“語言”為核心,主要討論語言設計、結構化和麵向物件特性,以及部分的動態語言特性。透過語言知識結構的梳理,讓你看到曾經摸過的那些專案、寫過的那些程式碼、填過的那些巨坑的影子,最終發掘出暗影背後湧動的語言原力,幫助你找到屬於你自己的、可規劃的語言學習體系。
《JavaScript核心原理解析》作者簡介
周愛民,前端“綠皮書”《JavaScript語言精髓與程式設計實踐》作者,專注於軟體開發與架構、專案管理二十餘年,曾任盛大網路平臺架構師、支付寶業務架構師、豌豆莢首席架構師等職。著有《Delphi原始碼分析》《大道至簡:軟體工程實踐者的思想》《大道至易:實踐者的思想》《程式原本》《我的架構思想:基本模型、理論與原則》等書。
你將獲得
深度解讀 JavaScript 核心技術
JavaScript 語言特性以及原理剖析
幫你構建語言知識結構體系
JavaScript 的精進指南
《JavaScript核心原理解析》課程設計
1.專欄內容適合誰?
專欄面向JavaScript語言的實際應用者與深度愛好者,以講述JavaScript語言特性、原理以及核心實現技術為主。周愛民將綜合程式碼的特殊性、程式碼所涉問題的領域、與該程式碼相似的或同類的問題,將程式碼逐步分解、解析,一方面發掘它們潛在的應用,另一方面幫助你構建一個語言知識結構。
閱讀基礎要求:至少有一門程式語言經驗,接觸並使用過JavaScript。
不適合人群:無程式設計經驗的初學者。
2.專欄會講哪些知識?
專欄每一講都是一個獨立話題,以一行程式碼為標題,整個話題會圍繞該行程式碼展開。內容包括:程式碼的特殊性,程式碼所涉問題的領域,程式碼的逐步分解解析,與該程式碼相似的或同類的問題,潛在的應用,不為人知的歷史,標準規範對此的態度,業界的一些看法與爭議等等。
3.專欄模組是如何設定的?
專欄正文共21期,分為4個模組。
“從零開始”主要講述構成JavaScript語言的基礎——JavaScript語言的靜態結構,主要包括詞法環境、塊級作用域、語句、宣告、字面量、變數環境、模組(名字空間)等等。
“從表示式到執行引擎”主要講述JavaScript的執行過程,主要包括執行棧、執行佇列、執行上下文、函式(函式物件\/閉包)作為執行結構如何參與運算等等,還將講述表示式(運算子+運算元)與優先順序這個體系,說明表示式運算與語句運算間的不同。
“從原型到類”主要講述JavaScript物件導向程式設計體系中最核心的一些設計,包括類繼承、原型繼承、屬性表的使用、內部方法等等,並對索引陣列和關聯陣列在JavaScript中的應用與整合做深度分析。
“從粗通到精通的進階之路”主要講述JavaScript作為動態語言的主要特性,包括動態的型別、動態的執行過程和動態的環境上下文等等。
《JavaScript核心原理解析》課程目錄
開篇詞 如何解決語言問題?
從零開始:JavaScript語言是如何構建起來的
delete 0
JavaScript中到底有什麼是可以銷燬的
var x = y = 100
宣告語句與語法改了 JavaScript語言核心性質但也背上了黑鍋
x.a = {n:2}
一道被無數人無數次地解釋過的經典面試題
export default function() {}
你無法匯出一個匿名函式表示式
for (let x of [1,2,3]) …
這個let將導致迴圈語句的開銷遠超預期,代價比遞迴還要高
從表示式到執行引擎:JavaScript是如何執行的
x: break x;
搞懂如何在迴圈外使用break,方知語句執行的真解
‘${1}’
特殊的可執行結構:語句與表示式之外的第三類存在
x => x
函式式語言的核心抽象:函式與表示式的同一性
(…x)
不是表示式、語句、函式,但卻能執行的它,到底是什麼
x = yield x
迭代過程的“函式式化”:僅有遞迴不夠,還要讓函式能多次傳入傳出
從原型到類:JavaScript是如何一步步
走向應用程式語言的
throw 1;
它在“最簡單語法榜”上排名第三
1 in 1..constructor
這行程式碼的結果值,既可能是true,也可能是false
new X
從構造器到類,為你揭密物件構造的全程
super.xxx()
直到ECMAScript10還是個半吊子實現的’super.xxx’也值得一講
return Object.create(new.target.prototype)
做框架設計的基本功:寫一個根類
[a, b] = {a, b}
讓你從一行程式碼看到物件的本質
Object.setPrototypeOf(x, null)
去蕪存菁:連Brendan Eich都認錯,但null值還活著
從粗通到精通的進階之路:唯一不變的是變化本身
a + b
動態型別:災難之源vs最好的特性
eval(‘{abc:1}’)
JavaScript如何做到讓程式碼可以隨時隨地執行
(0, evalK’x = 100′);
破壞性設計:一行程式碼讓嚴格模式形同虛設
new Function(‘x = 100’)();
函式的類化是對動態與靜態系統的再次統一
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***