Rumah hujung hadapan web tutorial js Meneroka Pengaturcaraan Berorientasikan Objek (OOP) dalam JavaScript

Meneroka Pengaturcaraan Berorientasikan Objek (OOP) dalam JavaScript

Dec 26, 2024 pm 03:21 PM

Exploring Object-Oriented Programming (OOP) in JavaScript

Meneroka Pengaturcaraan Berorientasikan Objek (OOP) dalam JavaScript

Tarikh: 17 Disember 2024

Pengaturcaraan Berorientasikan Objek (OOP) ialah paradigma yang menggunakan objek untuk memodelkan entiti dunia sebenar. JavaScript, sebagai bahasa pengaturcaraan serba boleh, menyediakan sokongan teguh untuk OOP melalui prototaipnya, kelas ES6 dan peningkatan moden. Hari ini, kita akan mendalami prinsip dan ciri OOP dalam JavaScript.


Konsep Teras OOP dalam JavaScript

1. Objek

Objek ialah blok binaan OOP. Dalam JavaScript, objek ialah koleksi pasangan nilai kunci.

Contoh: Mencipta Objek

const car = {
  brand: "Toyota",
  model: "Corolla",
  start() {
    return `${this.brand} ${this.model} is starting.`;
  }
};

console.log(car.start()); // Output: Toyota Corolla is starting.
Salin selepas log masuk
Salin selepas log masuk

2. Kelas

Kelas ialah cetak biru untuk mencipta objek. Mereka merangkum data dan tingkah laku. JavaScript memperkenalkan kata kunci kelas dalam ES6.

Contoh: Membuat Kelas

class Animal {
  constructor(name, species) {
    this.name = name;
    this.species = species;
  }

  makeSound() {
    return `${this.name} is making a sound.`;
  }
}

const dog = new Animal("Buddy", "Dog");
console.log(dog.makeSound()); // Output: Buddy is making a sound.
Salin selepas log masuk
Salin selepas log masuk

3. Enkapsulasi

Encapsulation bermaksud menggabungkan data dan kaedah bersama-sama sambil mengehadkan akses terus kepada beberapa komponen. JavaScript mencapai ini menggunakan ahli awam, peribadi dan dilindungi.

Bidang Persendirian

Medan peribadi dilambangkan dengan awalan # dan hanya boleh diakses dalam kelas.

Contoh: Medan Persendirian

class BankAccount {
  #balance;

  constructor(initialBalance) {
    this.#balance = initialBalance;
  }

  deposit(amount) {
    this.#balance += amount;
  }

  getBalance() {
    return this.#balance;
  }
}

const account = new BankAccount(100);
account.deposit(50);
console.log(account.getBalance()); // Output: 150
// console.log(account.#balance); // Error: Private field '#balance' must be declared in an enclosing class
Salin selepas log masuk
Salin selepas log masuk

4. Warisan

Warisan membenarkan satu kelas mewarisi sifat dan kaedah daripada kelas lain menggunakan kata kunci lanjutan.

Contoh: Warisan

class Vehicle {
  constructor(brand) {
    this.brand = brand;
  }

  start() {
    return `${this.brand} vehicle is starting.`;
  }
}

class Car extends Vehicle {
  constructor(brand, model) {
    super(brand); // Calls the parent class constructor
    this.model = model;
  }

  display() {
    return `${this.brand} ${this.model} is ready to go.`;
  }
}

const myCar = new Car("Tesla", "Model S");
console.log(myCar.display()); // Output: Tesla Model S is ready to go.
Salin selepas log masuk
Salin selepas log masuk

5. Polimorfisme

Polymorphism membenarkan subkelas untuk mengatasi kaedah daripada kelas induknya untuk menyediakan pelaksanaan tertentu.

Contoh: Penggantian Kaedah

class Shape {
  area() {
    return "Area is not defined.";
  }
}

class Circle extends Shape {
  constructor(radius) {
    super();
    this.radius = radius;
  }

  area() {
    return Math.PI * this.radius ** 2;
  }
}

const circle = new Circle(5);
console.log(circle.area()); // Output: 78.53981633974483
Salin selepas log masuk
Salin selepas log masuk

6. Abstraksi

Abstraksi memfokuskan pada mendedahkan butiran penting sahaja sambil menyembunyikan kerumitan pelaksanaan. Walaupun JavaScript tidak mempunyai kelas abstrak secara asli, anda boleh mensimulasikannya.

Contoh: Mensimulasikan Abstraksi

class Animal {
  constructor(name) {
    if (this.constructor === Animal) {
      throw new Error("Abstract class cannot be instantiated directly.");
    }
    this.name = name;
  }

  makeSound() {
    throw new Error("Abstract method must be implemented.");
  }
}

class Dog extends Animal {
  makeSound() {
    return "Bark!";
  }
}

const dog = new Dog("Buddy");
console.log(dog.makeSound()); // Output: Bark!
// const animal = new Animal("Some Animal"); // Error: Abstract class cannot be instantiated directly.
Salin selepas log masuk

7. Prototaip dan Rantaian Prototaip

JavaScript ialah bahasa berasaskan prototaip. Setiap objek mempunyai pautan dalaman ke objek lain yang dipanggil prototaipnya.

Contoh: Rantai Prototaip

const car = {
  brand: "Toyota",
  model: "Corolla",
  start() {
    return `${this.brand} ${this.model} is starting.`;
  }
};

console.log(car.start()); // Output: Toyota Corolla is starting.
Salin selepas log masuk
Salin selepas log masuk

8. Komposisi Objek lwn. Warisan

Daripada menggunakan warisan, anda boleh mengarang objek dengan menggabungkan fungsi. Pendekatan ini mengelakkan kerumitan hierarki warisan mendalam.

Contoh: Komposisi

class Animal {
  constructor(name, species) {
    this.name = name;
    this.species = species;
  }

  makeSound() {
    return `${this.name} is making a sound.`;
  }
}

const dog = new Animal("Buddy", "Dog");
console.log(dog.makeSound()); // Output: Buddy is making a sound.
Salin selepas log masuk
Salin selepas log masuk

Prinsip Utama OOP

  1. KERING (Jangan Ulangi Sendiri): Gunakan semula kod melalui kelas dan warisan.
  2. Prinsip SOLID: Ikuti amalan terbaik untuk menulis kod OOP boleh skala dan boleh diselenggara.

Contoh Dunia Sebenar: Sistem Pengurusan Pengguna

Langkah 1: Tentukan Kelas Asas

class BankAccount {
  #balance;

  constructor(initialBalance) {
    this.#balance = initialBalance;
  }

  deposit(amount) {
    this.#balance += amount;
  }

  getBalance() {
    return this.#balance;
  }
}

const account = new BankAccount(100);
account.deposit(50);
console.log(account.getBalance()); // Output: 150
// console.log(account.#balance); // Error: Private field '#balance' must be declared in an enclosing class
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Lanjutkan Kefungsian

class Vehicle {
  constructor(brand) {
    this.brand = brand;
  }

  start() {
    return `${this.brand} vehicle is starting.`;
  }
}

class Car extends Vehicle {
  constructor(brand, model) {
    super(brand); // Calls the parent class constructor
    this.model = model;
  }

  display() {
    return `${this.brand} ${this.model} is ready to go.`;
  }
}

const myCar = new Car("Tesla", "Model S");
console.log(myCar.display()); // Output: Tesla Model S is ready to go.
Salin selepas log masuk
Salin selepas log masuk

Langkah 3: Buat Kejadian

class Shape {
  area() {
    return "Area is not defined.";
  }
}

class Circle extends Shape {
  constructor(radius) {
    super();
    this.radius = radius;
  }

  area() {
    return Math.PI * this.radius ** 2;
  }
}

const circle = new Circle(5);
console.log(circle.area()); // Output: 78.53981633974483
Salin selepas log masuk
Salin selepas log masuk

Amalan Tugas

  1. Buat hierarki kelas untuk sistem pengurusan perpustakaan.
  2. Melaksanakan kelas BankAccount dengan medan peribadi untuk baki dan kaedah awam untuk deposit dan pengeluaran.
  3. Tulis kelas Kenderaan dengan subkelas seperti Kereta dan Basikal yang menunjukkan polimorfisme.

Kesimpulan

OOP dalam JavaScript menyediakan cara yang berkesan untuk menulis kod yang bersih, modular dan boleh digunakan semula. Dengan menguasai konsep seperti kelas, warisan, enkapsulasi dan polimorfisme, anda akan dilengkapi dengan baik untuk membina aplikasi berskala. Teruskan bereksperimen dan gunakan konsep ini kepada masalah dunia sebenar untuk mengukuhkan pemahaman anda!

Topik Esok: Kami akan meneroka Pengaturcaraan Asynchronous dalam JavaScript, menyelam jauh ke dalam panggilan balik, janji dan async/menunggu. Nantikan!

Atas ialah kandungan terperinci Meneroka Pengaturcaraan Berorientasikan Objek (OOP) dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1267
29
Tutorial C#
1239
24
Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

JavaScript: meneroka serba boleh bahasa web JavaScript: meneroka serba boleh bahasa web Apr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

See all articles