首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 實例(instance) 概念詳解:從類到對象的具體化過程

     編輯:程式設計疑難解答

定義

**實例** 是通過構造函數 (或 `class`)、使用 `new` 操作符創建出的**具體對象**。它擁有類定義的所有屬性結構與方法行為,但持有**獨立的狀態數據**。

類比

  • **類** = 圖紙/模具 (定義結構)
  • **實例** = 根據圖紙造出的具體房子/零件 (佔用內存、有具體數值)
  • **實例化** = 根據圖紙造房子的過程 (`new Constructor()`)

代碼演示


// 1. 定義類 (構造函數)
function Car(brand, color) {
    this.brand = brand;
    this.color = color;
    this.drive = function() { console.log(this.brand + ' running'); };
}

// 2. 實例化
var myCar = new Car('Tesla', 'Red');   // myCar 是 Car 的一個實例
var yourCar = new Car('BMW', 'Blue');  // yourCar 是另一個實例

// 3. 實例特徵
console.log(myCar.brand);      // 'Tesla' - 獨立狀態
console.log(yourCar.brand);    // 'BMW'   - 互不影響
myCar.drive();                 // 'Tesla running'
console.log(myCar instanceof Car); // true - 類型標識

關鍵特性

特性說明
獨立性每個實例擁有自己的屬性副本 (引用類型屬性指向同一對象除非重新賦值)
共享方法方法通常定義在 `prototype` 上,所有實例共享同一函數對象,節省內存
類型檢查`instanceof` 操作符檢查構造函數的 `prototype` 是否在實例原型鏈上
構造器引用實例 `.constructor` 指向創建它的構造函數

ES6 Class 寫法 (本質相同)


class Car {
    constructor(brand, color) {
        this.brand = brand;
        this.color = color;
    }
    drive() { console.log(this.brand + ' running'); }
}
const myCar = new Car('Tesla', 'Red'); // 實例

常見誤區

  • ❌「實例就是類」→ ✅ 類是抽象模板,實例是具體佔用內存的對象。
  • ❌「`var obj = {}` 也是實例」→ ✅ 它是 `Object` 的實例,但不是自定義類的實例。
  • ❌「構造函數返回的就是實例」→ ✅ 若構造函數 `return {}` 返回其他對象,`new` 表達式結果為該對象,**而非** `this` 綁定的實例。

總結

**實例 = `new Constructor()` 產出的對象**。它是面向對象編程中「對象」的具體體現,承載數據狀態,響應方法調用。理解「類/構造函數 → 實例化 → 實例」三部曲,是掌握 JS 面向對象的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved