畢業(yè)兩年了,做前端也一年多了,一直以為我對javascript很清楚,可是最近受到了沉重的打擊才知道原來什么都不會。失業(yè)了,突然知道學的雜原來沒有什么好處,不如學的精。決定先攻克javascript,再轉戰(zhàn)actionscript。
本來想看一下javascript高級程序設計中文版,可是發(fā)現(xiàn)第二版的英文版已經(jīng)出了,里面加入了很多RIA方面的東西,所以決定與時俱進,學習第二版。英文版看著就是不爽,記得都沒有中文版清楚,所以從來沒有寫過讀書筆記的我,終于決定克服懶惰惡習,要寫讀書筆記了,O(∩_∩)O~。希望一切順利。
偶是從第四章開始看的,講的是變量,作用域和存儲器,javascript的核心語言是ECMAScript,在ECMAScript中,變量存放兩種數(shù)據(jù)類型的值,原始值和引用值。書中也給出了一個和容易理解的圖形,我就不客氣的拿來用用了。吼吼....,不支持圖像。還是自己動手了。
Stack(棧)存放簡單數(shù)據(jù)類型 heap(堆)存放引用類型(對應棧中的地址(O))
數(shù)字(11) 對象
布爾值(true) 對象
null 對象
地址(O) 對象
字符串(string) 對象
書中是這樣解釋這個圖形的:這個圖形表明原始類型數(shù)據(jù)存儲在棧中。棧中的每個變量占用一個單一位置并且連續(xù)的存儲。當棧中存在一個存儲地址的時候,它作為一個指針指示存放在堆中的一個對象。堆不是連續(xù)存儲的,因為每個對象都需要不同大小的內存。
簡單說就是占有固定內存的放棧中,占有不固定內存的放堆中。
接下來根據(jù)原始值和引用值的特點說了動態(tài)屬性問題,只有引用值才可以有動態(tài)屬性??聪旅胬樱?
變量person被定義為一個對象,變量person在棧中有一個存儲地址,new指針指向person存放在堆中的對象。這里我們可以動態(tài)的為對象添加屬性,如name,age,job...
var person = new Object();
person.name = “Nicholas”;
alert(person.name); //”Nicholas”
而原始值當然不能存在動態(tài)的屬性了。
先去解決溫飽問題,待續(xù)......
Tag標簽: javascript,學習筆記