官术网_书友最值得收藏!

3.2 JavaScript的結構

JS的核心是對象,每個對象都可以包含0個或多個由名值對組成的屬性。

對象的屬性有兩種類型:基礎類型(直接量)和對象類型(另外還有一種特殊類型的屬性,后面再給大家介紹)。基礎類型的屬性不可以再包含屬性,而對象類型的屬性還可以再包含自己的屬性,此時該對象既是一個對象又是另外一個對象的屬性。

JS中的對象又可以分為function和object兩種類型(注意都是小寫),這一點非常重要。理解了這一點就抓住了JS的核心,在學習完后面的內容之后大家應該會有更深刻的認識。對象和屬性類型的結構如圖3-9所示。

圖3-9 對象和屬性類型的結構

Java等面向對象語言中的對象是通過類來創建的,它們的類是一個樹結構,有統一的根節點(例如Java中的Object),而JS中沒有類的概念,更沒有類的樹結構。JS中的object類型對象是使用function類型對象創建的。JS中經常使用的String、Array和Date等對象其實都是function類型的對象,就連Object對象也是function類型的對象,而使用它們創建出來的對象就是object類型。可以在FireBug中使用typeof來查看,如圖3-10所示。

圖3-10 在FireBug中使用typeof來查看對象

多知道點

在FireBug中怎么調試代碼

在FireBug的控制臺選項卡中的最下面一行可以輸入單行命令,按回車鍵后就會在當前頁面的環境中執行,即可以操作當前頁面所對應的對象。如果要執行多行命令,那么可以通過單擊輸入框右邊的紅色按鈕切換到多行代碼的模式。

在單行代碼模式下控制臺會自動輸出返回值,在多行模式下,如果想輸出多個結果,則需要使用console.log(msg)函數來實現。如果想清除控制臺的內容,那么可以單擊上方的“清除”按鈕。

需要注意的是,執行了自己的代碼之后可能會修改所在頁面的對象,例如圖3-10中的代碼就定義了obj和date兩個全局變量。如果想恢復原來的狀態,只需要刷新瀏覽器就可以了。

JS中用來創建object類型對象的各種function對象之間并沒有繼承關系,但是創建出來的object類型的對象可以繼承其他對象的屬性。另外,由于一個對象可以作為另外一個對象的屬性存在,因此對象之間還有另外一層包含關系。這些關系綜合到一起就會非常復雜,我們現在也不需要全部理解,只要明白一個對象可以是另外一個對象的屬性即可,在學完本書全部之后,這些內容就能全部理解清楚了。JS的本質就是一個大的對象,這個對象就是Global Object,它是由宿主環境(例如瀏覽器)創建出來的,在瀏覽器中就是window對象,其他的對象都是它的屬性,或者屬性的屬性。

主站蜘蛛池模板: 桐梓县| 饶阳县| 浦城县| 平湖市| 池州市| 桦南县| 内黄县| 黑河市| 安阳县| 自贡市| 新昌县| 陆丰市| 饶平县| 凉山| 松原市| 新野县| 弥勒县| 德格县| 安顺市| 赤壁市| 洞口县| 民和| 罗源县| 吴江市| 含山县| 盘山县| 哈巴河县| 陆川县| 巴林右旗| 饶阳县| 资阳市| 乡城县| 冀州市| 长寿区| 贵溪市| 公主岭市| 策勒县| 南靖县| 大英县| 本溪市| 仁寿县|