1. 程式人生 > 實用技巧 >JavaScript高階(05_物件)

JavaScript高階(05_物件)

物件Object

  • 物件的分類:

    • 內建物件

      • 由ES標準中定義的物件,在任何的ES的實現中都可以使用

      • 比如:Math String Number Boolean Function Object....

    • 宿主物件

      • 由JS的執行環境提供的物件,目前來講主要指由瀏覽器提供的物件

      • 比如BOM(瀏覽器物件) DOM(文件物件)

      • 比如 console document

    • 自定義物件

      • 由開發人員自己建立的物件

  • 建立物件

    • 建構函式

      • 使用new關鍵字呼叫的函式,是建構函式constructor

      • var obj = new Object();
      • 建構函式是專門用來建立物件的函式

      • 在物件中儲存的值成為屬性

      • 向物件新增屬性

        • 語法:物件.屬性名=屬性值; | 物件["屬性名"] = 屬性值

      • 讀取物件中的屬性

        • 語法:物件.屬性名 | 物件["屬性名"]

      • 如果讀取物件中沒有的屬性,不會報錯,而會返回Undefined

      • 修改物件中額屬性值

        • 語法:物件.屬性名=屬性新值;

      • 刪除物件的屬性

        • 語法:delete 物件.屬性名

    • 物件字面量

      • 可以在建立物件時,直接指定物件中的屬性

      • 語法:{屬性名:屬性值, 屬性名:屬性值...}

        • 物件字面量的屬性名可以加引號,也可以不加

        • 如果要使用一些特殊的名字,則必須加引號

        • 屬性名和屬性值是一組的名值結構

        • 名和值之間使用:連線,多個名值之間使用,隔開

      • var obj2 = {name:"Tom",age:18}
    • Note

      • 屬性名

        • 物件屬性名不強制要求遵守識別符號的規範

        • 儘量按照識別符號的規範去用

      • 屬性值

        • js物件的屬性值,可以是任意的資料型別

        • 也可以是一個物件

      • in運算子

        • 通過in可以檢查一個物件中是否含有指定的屬性名

        • 語法:“屬性名” in 物件

          • var obj = new Object()
            obj.name = "Tom"
            console.log("name" in obj) //true
            console.log("test" in obj) //false
  • 基本資料型別和引用資料型別

    • 變數都是儲存到棧記憶體中的

      • 形式:變數名=變數值

      • 基本資料型別的值直接在棧記憶體中進行儲存

      • 值與值之間是獨立存在的,修改一個變數不會影響其他的變數的值

    • 物件是儲存到堆記憶體中的

      • 每建立一個新的物件,就會在堆記憶體中開闢出一個新的記憶體空間

      • 變數儲存的是物件所對應的記憶體地址(物件的引用)

      • 當通過一個變數修改物件屬性時,另一個也會受到影響

    • 比較

      • 當比較兩個基本資料型別的值時,就是值的比較

      • 而比較兩個引用資料型別時,他們比較的是物件的記憶體地址

        • 如果兩個物件是一模一樣的,但是記憶體地址不同,結果也返回false