樓市低迷,業主是不是該要個說法;黃金暴跌,誰來給大媽們一個說法;中國足球,敢不敢給大家一個說法。
給個說法,誰給,給誰,這該是哲學的範疇了吧。
但是,在這裡,BOM是真真切切的給javascript一個說法,這究竟是怎麼個意思呢,我們慢慢來看。
我們先來回顧下完整javascript的結構組成:ECMAjavascript + DOM + BOM。
ECMAjavascript我們記得很清楚,這是核心,變數裡存不同類型的值,運算子對比值,運算子改變值,語句描述運算,語句合成函數方法,就好像一個實體裝置的說明書,明明白白告訴了你,它需要怎樣的操作;DOM就像是耐不住寂寞的孩子,拿到說明書就開始操作,這裡打一巴掌,那裡踢一腳,偶爾還拆幾個模組,結果裝置這裡掉個螺絲,那裡少塊漆,變的破舊不堪;而BOM呢,它是什麼,它就是你最初做這個裝置的初衷,你能看到的是它的功能,可能它不再美觀,可能有些古老,但是,DOM無論你給我把夢想拆的多碎,我總能用BOM總能看到它的熠熠生輝。
BOM,browser object model的縮寫,簡稱瀏覽器物件模型,又是個可愛到讓人淩亂的答案,可恨的是它仍然是對的。
BOM不像DOM那麼細膩,它沒法整合整個文檔的內容,但是它狂放,它要將它整個的實現,它進行的是瀏覽器和內容之間的互動,讓你最直觀的看到javascript的魅力,甚至javascript直接以BOM模型為入口來改變瀏覽器。可惜這個世界終究是多彩的,個體的差異永遠無法忽略,狼有狼窩,鼠有鼠洞,它沒有標準,只看你就竟讓誰來做,當然這裡也就出現了相容問題,這是後話,暫且不談。
其實最難的便是理解BOM的概念,上面這一大片非專業的文字是我的理解,雖然舉例略有偏頗,但感覺意思應該是對的。
接下來,我們只簡單介紹BOM的一些知識,先讓我們看幅結構圖
如果說DOM的操作是跟滑鼠、鍵盤和頁面本身內容相關聯的話,BOM則強勢的要多了些,history和location是視窗,screen和navigator是螢幕資訊,緩衝檔案cookie也在這裡,scroll捲軸它其實也可以操作的,還有架構frames,甚至還有那些彈出框,這些每一個都可以夠寫多篇介紹的,就不在這裡多說了,如果還不夠明了的話,來看看下面這幅:
其實,BOM的存在,本身是不是就是給javascript最好的說法呢,果然存在即是合理的啊,這是我當前的理解,經年過後,不知道我會怎麼看這時的我,至少我現在很開心,我這樣把它理解了,睡了,有些倦。