JS基礎(chǔ)學(xué)習(xí)(三)

對(duì)象
數(shù)組

對(duì)象

  • 對(duì)象是JS的基本數(shù)據(jù)類型。對(duì)象是一種復(fù)合值:它將很多值(原始值或者其他對(duì)象)聚合在一起,可通過名字訪問這些值。對(duì)象也可看做是屬性的無序集合,每個(gè)屬性都是一個(gè)名/值對(duì)。屬性名是字符串,因此我們可以把對(duì)象看成是從字符串到值的映射。然而對(duì)象不僅僅是字符串到值的映射,除了可以保持自有屬性,JS對(duì)象還可以從一個(gè)稱為原型的對(duì)象繼承屬性。對(duì)象的方法通常是繼承的屬性。這種“原型式繼承”(prototypal inheritance)是JS的核心特征。
  • JS對(duì)象是動(dòng)態(tài)的--可以新增屬性也可以刪除屬性--但它們通常用來模擬靜態(tài)對(duì)象以及靜態(tài)類型語言中的“結(jié)構(gòu)體”。
  • 除了字符串、數(shù)字、true、false、null和undefined之外,JS中的值都是對(duì)象。盡管數(shù)字、字符串和布爾值不是對(duì)象,但它們的行為和不可變對(duì)象非常類似。
  • 對(duì)象是可變的,我們通過引用而非值來操作對(duì)象。如果變量x是指向一個(gè)對(duì)象的引用,那么執(zhí)行代碼var y = x; 變量y也是指向同一個(gè)對(duì)象的引用,而非這個(gè)對(duì)象的副本。通過變量y修改這個(gè)對(duì)象亦會(huì)對(duì)變量x造成影響。
  • 對(duì)象最常見的用法是創(chuàng)建(create)、設(shè)置(set)、查找(query)、刪除(delete)、檢測(cè)(test)和枚舉(enumerate)它的屬性。屬相包括名字和值,屬性名可以是包含空字符串在內(nèi)的任意字符串,但對(duì)象中不能存在兩個(gè)同名的屬性。
  • 屬性除了名字和值以外還有一些與之相關(guān)的值,稱為“屬性特性”(property attribute)
    (1)可寫(writable attribute),表明是否可以設(shè)置該屬性的值
    (2)可枚舉(enumerable attribute),表明是否可以通過for/in循環(huán)返回該屬性
    (3)可配置(configurable attribute),表明是否可以刪除和修改該屬性。
    ECMAScript 5之前,通過代碼給對(duì)象創(chuàng)建的所有屬性都是可寫的、可枚舉的、可配置的。
  • 除了包含屬性之外,每個(gè)對(duì)象還擁有三個(gè)相關(guān)的額對(duì)象特性(object attribute)
    (1)對(duì)象的原型(prototype)指向另外一個(gè)對(duì)象,被對(duì)象的屬性繼承自它的原型對(duì)向
    (2)對(duì)象的類(class)是一個(gè)標(biāo)識(shí)對(duì)象類型的字符串
    (3)對(duì)象的擴(kuò)展標(biāo)記(extensible flag)指明了(在ECMAScript 5中)是否可以向該對(duì)象添加新屬性
  • 三類JS對(duì)象和兩類屬性做區(qū)分:
    (1)內(nèi)置對(duì)象(native object)是由ECMAScript規(guī)范定義的對(duì)象或類。例如數(shù)組、函數(shù)、日期和正則表達(dá)式都是內(nèi)置對(duì)象。
    (2)宿主對(duì)象(host object)是由JS解釋器所嵌入的宿主環(huán)境(比如Web瀏覽器)定義的??蛻舳薐S中表示網(wǎng)頁結(jié)構(gòu)的HTMLElement對(duì)象均是宿主對(duì)象。既然宿主環(huán)境定義的方法可以當(dāng)成普通的JS函數(shù)對(duì)象,那么宿主對(duì)象也可以當(dāng)成內(nèi)置對(duì)象。
    (3)自定義對(duì)象(user-defined object)是由運(yùn)行中的JS代碼創(chuàng)建的對(duì)象
    (4)自有屬性(own property)是直接在對(duì)象中定義的屬性
    (5)繼承屬性(inherited property)是在對(duì)象的原型對(duì)向中定義的屬性。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容