關於 JavaScript 物件屬性和方法的一切

本篇文件記錄了所有 Object 內建物件的屬性和方法。

除了原始類型(字串、數字、布林值、符號、null 或 undefined)之外的任何值都是一個物件。即使是陣列或函式,在底層也都是物件。

可以使用物件字面語法來生成一個物件值:

const person = {}
typeof person // "object"

可以使用 Object 全局函式來生成物件值:

const person = Object()
typeof person // "object"

也可以使用 Object 建構函式來生成物件值:

const person = new Object()
typeof person // "object"

另一種語法是使用 Object.create()

const car = Object.create()

可以使用以下語法來初始化物件的屬性:

const person = {
  age: 36,
  name: 'Flavio',
  speak: () => {
    // 說話
  }
}

const person = Object({
  age: 36,
  name: 'Flavio',
  speak: () => {
    // 說話
  }
})

const person = new Object({
  age: 36,
  name: 'Flavio',
  speak: () => {
    // 說話
  }
})

這些方式基本上是等價的,因為它們都可以讓您訪問我下面將列出的方法。

您也可以使用大寫字母開頭的函式前面的 new 關鍵字來初始化一個物件。這個函式作為該物件的構造函式。在其中,我們可以初始化接收到的參數,以設置物件的初始狀態:

function Car(brand, model) {
  this.brand = brand
  this.model = model
}

使用以下代碼初始化一個新物件:

const myCar = new Car('Ford', 'Fiesta')
myCar.brand // 'Ford'
myCar.model // 'Fiesta'

物件擁有屬性。每個屬性都有一個名稱和一個值。

您可能會認為物件基本上就是一個映射字典數據結構,這是正確的。

屬性的值可以是任何類型,這意味著它甚至可以是另一個物件,因為物件可以嵌套其他物件。

當屬性值是函式時,我們稱之為方法

物件可以從其他物件繼承屬性,我們將在談到繼承時詳細介紹這一點。

物件始終以引用的方式傳遞

如果您將一個變量賦予另一個變量相同的值,如果它是一個原始類型,比如數字或字串,則它們以值的方式傳遞:

let age = 36
let myAge = age
myAge = 37
age // 36
const car = {
  color: 'blue'
}
const anotherCar = car
anotherCar.color = 'yellow'
car.color // 'yellow'

內建物件屬性

物件物件有 2 個屬性:

  • length 等於 1
  • prototype 這指向物件的原型物件:所有其他物件都繼承自該物件。有關更多信息,請參閱原型繼承文章。

靜態方法

我們將方法分為靜態方法和實例方法。靜態方法直接在 Object 上調用。實例方法在物件實例(一個物件)上調用。

靜態方法是提供位於同一空間中的函式的命名空間的絕佳方法。這樣,我們不需要全局函式,而是將所有函式都放在 Object 全局物件下的命名空間中。

實例方法