5. 認識物件

刪除物件的屬性 (key):

delete.myObj.myKey
// myObj 沒有 myKey 這個屬性了, 試圖存取顯示 undefined
// 成功刪除, delete 會回傳 true
// 原本就沒有該屬性, delete 也會回傳 true

變數如何保存一個物件?

變數可以保存一個值。 但對物件,變數保存的不是物件的內容,而是物件的「地址」。 「基本變數」代表的是一個值, 「物件變數」代表的是取得物件的方式(位置)。

使用 ., js 會依據 . 之前變數所存的位置,找到物件, 然後取得該屬性的值。

let car = new Car();
// 記憶體出現一個新的 Car 物件,
// 變數 car 指向這個新 Car 物件的位置。
car.color 使用 car 變數所指向的物件,找到 color 屬性

所以,和變數不同,如果傳「物件變數」給 funciton, 會改變原物件的值。

this

指定 function 為物件屬性,稱為「方法」。 方法中用 this 關鍵字可表示「該函式所在的物件」。

當執行一個 function 時,變數可能是

  • 全域變數
  • 區域變數
  • 參數

但「方法」的變數是「自己物件的 key 值」時, 變數不屬於上述情況,它需要先指向物件才找得到屬性, 所以必須使用 this.key 讓 js 知道指向當前物件,而不是基本變數。 this 變數會被分配給方法的物件 (方法屬於物件,被物件使用)。

http://jsbin.com/dubudit/5/edit?js,console

但物件自己的屬性的值無法用 this 表示當前物件,會代表 window。

使用 new 建立物件,會將 this 指定為物件本身。

透過迭代來知道物件中有哪些屬性 fot in

fot( var item in obj)
// item 代表 obj 裡面的一個屬性 (key)

方括號表示法中可以"做運算",但最後值需是字串。

obj["key" + "s"]

results matching ""

    No results matching ""