物件

Frontend SELF TW
等級 36 , 課堂 0
開放

6.1 建立物件

物件 是JavaScript中主要的資料類型之一,被廣泛用於儲存和管理資料。 物件就是屬性的集合,每個屬性由鍵(名稱)和值組成。在這節課,我們將討論 如何建立物件以及如何訪問其屬性和方法。

1. 物件字面量

在JavaScript中,創建物件最常見的方法就是使用物件字面量。

在這個例子中,我們創建了一個包含四個屬性的物件 personnameageisStudentgreet

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        isStudent: false,
        greet: function() {
          return 'Hello!';
        }
      };
    
  

2. Object構造函式

物件也可以使用 Object() 構造函式來創建。

這種方法與使用物件字面量創建物件是等效的,但語法上更冗長:

JavaScript
    
      let person = new Object();
      person.name = 'John';
      person.age = 30;
      person.isStudent = false;
      person.greet = function() {
        return 'Hello!';
      };
    
  

3. 構造函式

構造函式允許創建具有相同屬性和方法的多個物件實例。

在這個例子中,構造函式 Person() 用於創建物件 johnjane,它們具有相同的屬性和方法:

JavaScript
    
      function Person(name, age, isStudent) {
        this.name = name;
        this.age = age;
        this.isStudent = isStudent;
        this.greet = function() {
          return 'Hello!';
        };
      }

      let john = new Person('John', 30, false);
      let jane = new Person('Jane', 25, true);
    
  

4. Object.create() 方法

Object.create() 方法創建一個具有指定原型和屬性的物件。

在這個例子中,物件 john 基於 personPrototype 原型創建:

JavaScript
    
      let personPrototype = {
        greet: function() {
          return 'Hello!';
        }
      };

      let john = Object.create(personPrototype);
      john.name = 'John';
      john.age = 30;
      john.isStudent = false;
    
  

6.2 訪問屬性和方法

1. 通過點訪問

訪問物件屬性和方法最常見的方法是使用點:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        greet: function() {
          return 'Hello!';
        }
      };

      console.log(person.name);  // 輸出: John
      console.log(person.age);   // 輸出: 30
      console.log(person.greet()); // 輸出: Hello!
    
  

2. 通過方括號訪問

物件屬性也可以通過方括號來訪問。當屬性名稱存儲在變數中或者包含空格或特殊字符時,這種方法很有用:

JavaScript
    
      let person = {
        'first name': 'John',
        age: 30,
        greet: function() {
          return 'Hello!';
        }
      };

      console.log(person['first name']); // 輸出: John
      console.log(person['age']);        // 輸出: 30

      let propertyName = 'greet';
      console.log(person[propertyName]()); // 輸出: Hello!
    
  

3. 修改和添加屬性

物件屬性可以隨時修改或添加:

JavaScript
    
      let person = {
        name: 'John',
        age: 30
      };

      // 修改現有屬性
      person.age = 31;
      console.log(person.age); // 輸出: 31

      // 添加新屬性
      person.isStudent = false;
      console.log(person.isStudent); // 輸出: false
    
  

4. 刪除屬性

物件屬性可以使用 delete 操作符刪除:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        isStudent: false
      };

      delete person.isStudent;
      console.log(person.isStudent); // 輸出: undefined
    
  

6.3 遍歷物件屬性

1. for...in 迴圈

for...in 迴圈允許遍歷物件的所有可枚舉屬性:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        isStudent: false
      };

      for (let key in person) {
        console.log(`${key}: ${person[key]}`);
      }

      // 輸出:
      // name: John
      // age: 30
      // isStudent: false
    
  

2. Object.keys() 方法

Object.keys() 方法返回物件的所有可枚舉屬性的鍵組成的陣列:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        isStudent: false
      };

      let keys = Object.keys(person);
      console.log(keys); // 輸出: ['name', 'age', 'isStudent']
    
  

3. Object.values() 方法

Object.values() 方法返回物件的所有可枚舉屬性的值組成的陣列:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        isStudent: false
      };

      let values = Object.values(person);

      console.log(values); // 輸出: ['John', 30, false]
    
  

4. Object.entries() 方法

Object.entries() 方法返回物件的所有可枚舉屬性的[鍵, 值]組成的陣列:

JavaScript
    
      let person = {
        name: 'John',
        age: 30,
        isStudent: false
      };

      let entries = Object.entries(person);

      console.log(entries); // 輸出: [['name', 'John'], ['age', 30], ['isStudent', false]]
    
  

6.4 檢查屬性存在

1. in 操作符

in 操作符用於檢查物件中是否存在某屬性:

JavaScript
    
      let person = {
        name: 'John',
        age: 30
      };

      console.log('name' in person); // 輸出: true
      console.log('isStudent' in person); // 輸出: false
    
  

2. hasOwnProperty() 方法

hasOwnProperty() 方法檢查物件是否擁有指定的屬性(不是繼承而來的):

JavaScript
    
      let person = {
        name: 'John',
        age: 30
      };

      console.log(person.hasOwnProperty('name')); // 輸出: true
      console.log(person.hasOwnProperty('isStudent')); // 輸出: false
    
  
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION