本篇系列文為《You Don't Know JS》的讀書筆記,並搭配其他補充資料,寫下自己對這門語言的理解。
作為前端工程師,JavaScript 的各種實作細節是無法避開的課題,在一次次閱讀各種文件和文章,加上工作中累積的實作經驗,也算是對 JavaScript 建立起了相關的知識體系。於是就想藉著這次讀書筆記的機會,來和大家分享我所知道的 JavaScript。
所以說......就是要搞懂 JavaScript 啦!之前搞不懂的、一知半解的、模模糊糊的,這一次通通給他弄懂!
前面已經提到,繼承最大的優點就是提高程式的複用性,減少重複程式碼。但從反向來看,其缺點也在於上層物件與下層物件之間高度關聯性,改動原型鍊上層物件的內容會影響到下...
在討論多型(Polymorphism)的章節中,有提到了多型是利用原型鍊的「遮蔽(Shadowing)」來達成,不過遮蔽在實際狀況下有些需要注意的細節。 在為一...
前面已經說明過了原型在 JS 中是如何實踐的,與類導向不同,原型導向並不會進行類似父類與子類間的複製,原型實際是一種存在於物件上的內部連結,其作用是指向另一個物...
前面已經提過,JS 本身模擬了一些與類導向很相似的行為,但實際是靠原型實踐繼承,或者說實踐了委託(Delegation)。 class 則是在 ES6 引入的一...
私有屬性/方法 JS 的 class 雖然實踐了更直觀的繼承語法以及靜態方法,但至目前為止(2022 年 10 月)尚未引入 private 關鍵字,也就是說,...
對於 class 這個語法糖,以下再繼續進行一些考察。 this 的考察 class Circle1 { draw() { return this } }...
結束了物件和原型的介紹,接著來看看 JS 裡的型別吧。 所謂的型別(Types),是指一組固有、內建的性質,對引擎和開發者來說,這些性質標誌了一個特定值的行為,...
在前面的章節有介紹過,JS 內部擁有一些特殊物件,它們能夠創造出對應的值,這些物件被稱為內建物件(Build-in Objects)。而它們同時也都是 JS 的...
封箱(Boxing) 在前面的文章有提到,像是 "abc" 這樣非物件的純值,要取得 length 等屬性,就需要物件包裹器(wrapper...
一如前面所說,在絕大多數情況下,除了 ES6 新增的 Symbol 以外,所有型別都可以使用字面值直接創造,而不需要調用它們的內建函式。 所以如果確定是必要的,...