Rumah  >  Artikel  >  hujung hadapan web  >  JavaScript secara tegasnya tidak mempunyai kelas

JavaScript secara tegasnya tidak mempunyai kelas

WBOY
WBOYasal
2023-05-20 22:36:08572semak imbas

Dengan populariti dan penggunaan JavaScript yang meluas, semakin ramai pembangun mula memberi perhatian kepada beberapa ciri dan batasan bahasa pengaturcaraan JavaScript. Salah satunya ialah sama ada terdapat konsep kelas, yang menjadi persoalan yang hangat diperkatakan. Dalam artikel ini, kami akan mendalami topik ini untuk memahami sifat sebenar kelas JavaScript.

JavaScript ialah bahasa pengaturcaraan yang sangat fleksibel dengan ciri berkuasa, seperti penutupan, fungsi tertib lebih tinggi dan warisan prototaip, yang merupakan ciri teras JavaScript. Tidak seperti bahasa pengaturcaraan lain, JavaScript mempunyai kerumitan yang sangat tinggi dalam paradigma yang berbeza Adakah ia bahasa berorientasikan objek yang ketat

Bagi kebanyakan pembangun, kelas adalah kunci kepada banyak bahasa pengaturcaraan berorientasikan objek. Bahasa seperti Python, C#, dan Java mempunyai kelas yang membolehkan anda mentakrifkan sifat, kaedah dan mencipta kejadian baharu. Kelas menyediakan beberapa faedah kebolehgunaan semula dan kebolehlanjutan kod kerana ia membenarkan pengaturcara mengasingkan kod ke dalam modul, abstraksi dan penggunaan semula. Tetapi apabila kita bercakap tentang JavaScript, secara tegasnya tidak ada perkara seperti kelas.

Apakah itu kelas?

Untuk lebih memahami masalah ini, kita perlu terlebih dahulu memahami apa itu kelas. Kelas ialah perwakilan model objek dan struktur data khas yang boleh menerangkan ciri (sifat) dan tingkah laku (kaedah) objek.

Dalam hierarki kelas, kelas induk atas akan mentakrifkan beberapa atribut dan kaedah biasa, dan atribut dan kaedah biasa ini boleh diwarisi dan digunakan oleh subkelas. Subkelas boleh mentakrifkan semula atau mewarisi sifat dan kaedah ini, dan boleh menambah sifat dan kaedah mereka sendiri.

Sebagai contoh, berikut ialah contoh kelas yang ditulis dalam Java:

public class Person{
  private String name;
  private int age;
  
  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
  
  public String getName() {
    return this.name;
  }
  
  public int getAge() {
    return this.age;
  }
  
  public void sayHello() {
    System.out.println("Hello, my name is " + this.name);
  }
}

Dalam contoh ini, kami mentakrifkan kelas Orang, yang mengandungi dua atribut: nama dan umur serta dua Kaedah getName() dan getAge(). Ia juga mempunyai kaedah sayHello(), yang mencetak nama contoh Orang ke konsol.

Objek dalam JavaScript

Sesetengah orang mungkin berpendapat bahawa JavaScript ialah bahasa berorientasikan objek sepenuhnya, yang merupakan salah faham. Walaupun JavaScript menggunakan struktur sintaksis yang serupa dengan kelas, model objek sebenarnya adalah berdasarkan prototaip.

Dalam JavaScript, objek dicipta pada masa jalan berdasarkan fungsi JavaScript. Ia tidak mempunyai definisi kelas yang jelas, tetapi menggunakan pembina untuk mencipta objek baharu. Di dalam pembina, anda boleh menentukan sifat awal dan kaedah objek sebagai definisi asas objek.

Sebagai contoh, contoh berikut ialah objek Orang yang ditakrifkan oleh pembina JavaScript:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.getName = function() {
  return this.name;
};

Person.prototype.getAge = function() {
  return this.age;
};

Person.prototype.sayHello = function() {
  console.log("Hello, my name is " + this.name);
};

Seperti yang anda boleh lihat, objek Orang berdasarkan pembina dicipta dalam JavaScript. Dalam fungsi ini, kami menetapkan nama dan sifat umur dan menetapkannya kepada objek yang baru dibuat menggunakan kata kunci "ini". Kemudian, kami menggunakan objek Person.prototype untuk menentukan tiga kaedah untuk Orang yang baru dibuat.

Warisan prototaip

Dalam JavaScript, warisan ialah cara bukan tradisional, dilaksanakan menggunakan warisan prototaip. Warisan prototaip dilaksanakan kerana semua objek JavaScript mempunyai objek prototaip.

Setiap objek JavaScript mempunyai objek prototaip, yang mengandungi sifat dan kaedah objek tersebut. Apabila kita mencipta objek baharu, prototaip asalnya kosong dan ia mewarisi ahli daripada prototaip pembina. Mana-mana objek lain boleh terus menentukan sifat dan kaedah mereka sendiri.

Sebagai contoh, kod berikut menunjukkan cara menambah sifat dan kaedah baharu pada objek yang dicipta melalui warisan prototaip:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.getName = function() {
  return this.name;
};

Person.prototype.getAge = function() {
  return this.age;
};

Person.prototype.sayHello = function() {
  console.log("Hello, my name is " + this.name);
};

Person.prototype.setAge = function(newAge) {
  this.age = newAge;
};

Dalam contoh ini, kami menambah objek yang dipanggil kaedah setAge() dan menambah ia kepada objek prototaip Orang. Sekarang kita boleh menggunakan kaedah ini untuk menetapkan umur baharu untuk objek Orang.

Kesimpulan

Tegasnya, JavaScript tidak mempunyai kelas Ini disebabkan oleh reka bentuk khas JavaScript. Dalam JavaScript, objek dicipta berdasarkan pembolehubah prototaip, dan warisan prototaip digunakan untuk melaksanakan hubungan warisan antara objek. Akibatnya, JavaScript menyediakan model pengaturcaraan yang sangat fleksibel, membolehkan pengaturcara melaksanakan paradigma pengaturcaraan yang berbeza dalam fungsi yang berbeza.

Konsep teras pengaturcaraan berorientasikan objek JavaScript bukanlah kelas, tetapi objek. Oleh itu, apabila melaksanakan aplikasi JavaScript yang kompleks, anda perlu menguasai kemahiran cara mencipta dan mewarisi objek dengan membiasakan diri dengan mekanisme pewarisan prototaip JavaScript. Ini adalah kunci untuk menulis kod JavaScript yang cekap.

Atas ialah kandungan terperinci JavaScript secara tegasnya tidak mempunyai kelas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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