Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah perbezaan antara warisan dalam es5 dan es6
Perbezaan antara warisan es5 dan es6 ialah: es5 mula-mula mencipta subkelas, membuat instantiate kelas induk dan menambahkannya pada subkelas ini untuk mencapai warisan manakala es6 mencipta kelas induk dahulu, dan membuat instantiate subkelas dengan memanggil super Selepas kaedah mengakses kelas induk, ia melaksanakan warisan dengan mengubah suai ini.
Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.
Warisan ES5 pada asasnya mencipta objek contoh subkelas dahulu, dan kemudian menambahkan kaedah kelas induk kepada ini (Parent.apply( this) ).
Mekanisme pewarisan ES6 adalah berbeza sama sekali, objek contoh ini daripada kelas induk dicipta dahulu (jadi kaedah super() kelas induk mesti dipanggil dahulu), dan kemudian. pembina subkelas digunakan.
Warisan ES5 dilaksanakan melalui prototaip atau mekanisme pembina.
ES6 mentakrifkan kelas melalui kata kunci kelas, yang mempunyai kaedah pembina, dan pewarisan antara kelas dicapai melalui kata kunci lanjutan. Subkelas mesti memanggil kaedah super dalam kaedah pembina, jika tidak, ralat akan dilaporkan semasa membuat contoh baharu. Kerana subkelas tidak mempunyai objek ini sendiri, tetapi mewarisi objek ini kelas induk dan kemudian memprosesnya. Jika kaedah super tidak dipanggil, subkelas tidak boleh mendapatkan objek ini.
Warisan dalam ES6
Dalam JS tradisional, menjana objek adalah dengan mencipta pembina, kemudian mentakrifkan objek yang dijana
function parent(a,b){ this.a = a; this.b = b; }
dan kemudian lulus Prototaip menambah kaedah atau sifat yang diperlukan sepadan
parent.prototype.methods = function(){ return 'this is test methods'; } parent.prototype.attr = 'this is test attr‘;
dan ES6 memperkenalkan konsep kelas, iaitu kelas. Objek ditakrifkan melalui kelas kata kunci.
Kelas ialah kata kunci, gula bahasa, supaya anda boleh memahami objek yang dicipta dengan lebih jelas
Parameter yang dihantar melalui kaedah kawalan diterima melalui pembina atribut tulis atribut ini, Lalai ialah tiada parameter
class parent{ curstructor(a,b){ this.a = a; this.b = b; } }
Warisan dalam ES6 adalah berdasarkan warisan antara kelas. Ini dicapai melalui kata kunci extends.
Memanggil kelas induk melalui instantiasi super
class parent{ constructor(a,b){ this.a = a; this.b = b; } parentMethods(){ return this.a + this.b } } class child extends parent{ constructor(a,b,c){ super(a,b); this.c = c; } childMethods(){ return this.c + ',' + super.parentMethods() } } const point = new child(1,2,3); alert(point.childMethods());
Kod di atas ialah set ringkas warisan kelas ibu bapa-anak ES6.
Saya percaya anda telah melihatnya, walaupun perbezaan yang jelas ialah dalam ES6, kaedah super yang mengaktifkan komponen induk, bukannya mencipta instantiasi baharu, dengan kata lain, objek contoh kelas induk dibuat terlebih dahulu Selepas panggilan, ubah suai ini dalam pembina subkelas untuk melengkapkan objek prototaip.
Ringkasan:
Perbezaan terbesar antara warisan ES5 dan ES6 ialah:
1. ES5 mencipta subkelas dahulu, dan kemudian membuat instantiate kelas induk dan Tambahkan pada subkelas ini
2. ES6 mula-mula mencipta kelas induk, dan selepas mengakses induk dengan memanggil kaedah super dalam subset instan, pewarisan direalisasikan dengan mengubah suai ini
[Cadangan berkaitan : tutorial video javascript, bahagian hadapan web]
Atas ialah kandungan terperinci Apakah perbezaan antara warisan dalam es5 dan es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!