由於博主沒有系統的學習過前端基礎知識,因此打算讀一遍《JavaScript高級程序設計第三版》(如下簡稱「紅寶書」)。
爲了更深入地吸取知識,因此打算邊看邊記錄下知識點和一些本身的見解,並寫在這裏和你們一塊兒探討探討~前端
紅寶書是一本很適合初級前端去看的書,第四版已經出了,然而由於窮(其實也由於不懂英文),仍是選擇了第三版做爲本次讀物。本讀書筆記按照書本的目錄順序進行記錄,書的前三章主要講的是 JavaScript 的起源簡介還有一些基本的概念,在這裏就先不贅述了,之後有機會必定補上。bash
拓展:實際上在 ES6 中引入了一種新的原始類型
Symbol
,表示獨一無二的值。是 JavaScript 語言的第七種數據類型。函數
在書中介紹,基本類型值指的是簡單的數據段,而引用類型值指那些可能由多個值構成的對象。學習
上述 String
, Number
, Boolean
, null
, undefined
這5種基本數據類型是按值訪問的,由於能夠操做保存在變量中的實際的值。spa
引用類型的值是保存在內存中的對象,而 JavaScript 不容許直接訪問內存中的位置,也就是說不能直接操做對象的內存空間。在操做對象時,其實是在操做對象的引用而不是實際的對象。所以,引用類型的值是按引用訪問的。設計
書中注:這種說法不嚴密,當複製保存着對象的某個變量時,操做的是對象的引用。但在爲對象添加屬性時,操做的是實際 的對象。——圖靈社區「壯壯的前端之路」注code
定義基本類型和引用類型的方式是相似的:建立一個變量併爲該變量賦值。 可是,當這個值保存到變量後,對不一樣類型值能夠執行的操做則截然不同。對於引用類型的值,咱們能夠爲其添加屬性和方法,也能夠改變和刪除其屬性和方法。但咱們不能給基本類型的值添加屬性,儘管這樣作不會致使任何錯誤。對象
var person = new Object();
person.name = 'Nick';
alert(person.name); // 'Nick'
複製代碼
以上代碼建立了一個對象並將其保存在了變量 person
中。而後,咱們爲該對象添加了一個名爲 name
的屬性,並將字符串 "Nick" 賦值給了這個屬性。緊接着,又經過 alert()
函數訪問了這個新屬性。若是對象不被銷燬或者刪除,這個屬性會一直存在。ip
var name = 'Nicky';
name.age = 12;
alert(name.age); // undefined
複製代碼
以上代碼爲字符串 name
定義了一個名爲 age
的屬性,並賦值爲 12
,但在下一行訪問這個屬性時發現返回的是 undefinded
。這說明只能給引用類型動態地添加屬性,以便未來使用。內存
未完……