1. Warisan objek di js
Ada tiga metode pewarisan di js
Prototipe 1.js (prototipe) mengimplementasikan pewarisan
Copy kode kodenya sebagai berikut:
<SPAN style="WARNA LATAR BELAKANG: #ffffff"><SPAN style="UKURAN FONT: 18 piksel"><html>
<tubuh>
<skrip tipe="teks/javascript">
fungsi Orang(nama,umur){
ini.nama=nama;
this.usia=usia;
}
Orang.prototipe.sayHello=function(){
alert("Gunakan prototype untuk mendapatkan Nama: "+ini.nama);
}
var per=Orang baru("Ma Xiaoqian",21);
per.sayHello(); //Output: Gunakan prototipe untuk mendapatkan Nama: Ma Xiaoqian
fungsi Siswa(){}
Student.prototype=Orang baru("Hong Rutong",21);
var stu=Siswa baru();
Siswa.prototipe.kelas=5;
Siswa.prototipe.intr=fungsi(){
alert(ini.tingkat);
}
stu.sayHello();//Output: Gunakan prototipe untuk mendapatkan Nama: Hong Rutong
stu.intr();//Keluaran: 5
</skrip>
</tubuh>
</html></SPAN></SPAN>
2. Konstruktor mengimplementasikan pewarisan
Copy kode kodenya sebagai berikut:
<SPAN style="UKURAN FONT: 18 piksel"><html>
<tubuh>
<skrip tipe="teks/javascript">
fungsi Induk(nama){
ini.nama=nama;
this.sayParent=fungsi(){
alert("Orangtua:"+ini.nama);
}
}
fungsi Anak(nama,umur){
this.tempMethod=Induk;
this.tempMethod(nama);
this.usia=usia;
this.sayChild=fungsi(){
alert("Anak:"+nama.ini+"usia:"+usia ini);
}
}
var parent=Induk baru("Jiang Jianchen");
parent.sayParent(); //Keluaran: "Induk: Jiang Jianchen"
var anak=Anak baru("李明",24); //Keluaran: "Anak:usia:24"
anak.sayChild();
</skrip>
</tubuh>
</html></SPAN>
3.panggilan, ajukan permohonan untuk melaksanakan warisan
Copy kode kodenya sebagai berikut:
<SPAN style="UKURAN FONT: 18 piksel"><html>
<tubuh>
<skrip tipe="teks/javascript">
fungsi Orang(nama,umur,cinta){
ini.nama=nama;
this.usia=usia;
this.cinta=cinta;
this.say=fungsi say(){
alert("Nama :"+nama);
}
}
//metode panggilan
fungsi siswa(nama,umur){
Orang.panggilan(ini,nama,umur);
}
//menerapkan metode
fungsi guru(nama,cinta){
Person.apply(ini,[nama,cinta]);
//Person.apply(this,arguments); //Efek yang sama seperti kalimat sebelumnya, argument
}
//Persamaan dan perbedaan antara panggilan dan penerapan:
//1, parameter pertama sama, ini mengacu pada objek saat ini
//2, parameter kedua berbeda: panggilan adalah daftar parameter satu per satu; penerapan adalah array (argumen juga dapat digunakan)
var per=Orang baru("Wufenglou",25,"Wei Yingping"); //Keluaran: "Wufenglou"
per.katakan();
var stu=siswa baru("Cao Yu",18);//Keluaran: "Cao Yu"
stu.say();
var tea=guru baru("Qin Jie",16);//Keluaran: "Qin Jie"
teh.katakan();
</skrip>
</tubuh>
</html></SPAN>
2. Penggunaan panggilan dan lamaran (pengenalan mendetail)
Baik panggilan maupun penerapan di js dapat mengimplementasikan pewarisan. Satu-satunya perbedaan parameter adalah metode penulisan penerapan yang sesuai dengan func.call(func1,var1,var2,var3) adalah: func.apply(func1,[var1,var2,var3]) .
Penjelasan panggilan di manual JS:
Copy kode kodenya sebagai berikut:
<SPAN style="FONT-SIZE: 18px">metode panggilan
Panggil metode pada suatu objek untuk mengganti objek saat ini dengan objek lain.
panggilan([iniObj[,arg1[, arg2[, [,.argN]]]]])
parameter
Obj ini
Opsional. Objek yang akan digunakan sebagai objek saat ini.
arg1, arg2, , argN
Opsional. Urutan parameter metode akan diteruskan.
menjelaskan
Metode panggilan dapat digunakan untuk memanggil suatu metode atas nama objek lain. Metode panggilan mengubah konteks objek suatu fungsi dari konteks awal ke objek baru yang ditentukan oleh thisObj.
Jika parameter thisObj tidak tersedia, objek Global digunakan sebagai thisObj. </SPAN>
Sederhananya, fungsi kedua fungsi ini sebenarnya untuk mengubah penunjuk internal suatu objek, yaitu mengubah konten yang ditunjuk oleh objek tersebut. Ini terkadang berguna dalam pemrograman js berorientasi objek. Mari kita ambil apply sebagai contoh untuk membicarakan tentang peran penting kedua fungsi ini di js. menyukai:
Copy kode kodenya sebagai berikut:
<SPAN style="FONT-SIZE: 18px"> function Person(nama,umur){ //Tentukan kelas
ini.nama=nama; //nama
this.usia=usia; //Usia
this.sayhello=function(){alert(ini.nama)};
}
function Print(){ //Menampilkan atribut kelas
this.funcName="Cetak";
ini.tampilkan=fungsi(){
var pesan=[];
for(kunci var di sini){
if(typeof(ini[kunci])!="fungsi"){
msg.push([kunci,":",ini[kunci]].join(""));
}
}
alert(pesan.join(" "));
};
}
function Siswa(nama,umur,kelas,sekolah){ //Kelas siswa
Person.apply(this,arguments); // Keuntungan dibandingkan panggilan
Print.apply(ini,argumen);
this.grade=kelas; //Kelas
ini.sekolah=sekolah; //sekolah
}
var p1=Orang baru("Bu Kaihua",80);
p1.ucapkan halo();
var s1=Siswa Baru("Bai Yunfei",40,9,"Akademi Yuelu");
s1.tampilkan();
s1.ucapkan halo();
peringatan(s1.funcName);</SPAN>
Selain itu, Function.apply() memainkan peran penting dalam meningkatkan kinerja program:
Mari kita mulai dengan fungsi Math.max(). Math.max dapat diikuti oleh sejumlah parameter, dan terakhir mengembalikan nilai maksimum di antara semua parameter.
Misalnya
Copy kode kodenya sebagai berikut:
<SPAN style="UKURAN FONT: 18px">peringatan(Math.max(5,8)); //8
alert(Matematika.max(5,7,9,3,1,6)); //9
//Tetapi dalam banyak kasus, kita perlu mencari elemen terbesar dalam array.
var arr=[5,7,9,1];
//alert(Math.max(arr)); // Ini tidak berhasil. Tidak
//Tulis seperti ini
fungsi getMax(arr){
var arrLen=arr.panjang;
untuk(var i=0,ret=arr[0];i<arrLen;i++){
ret=Matematika.max(ret,arr[i]);
}
kembali mundur;
}
waspada(getMax(arr)); //9
//Beralih untuk menerapkan, Anda dapat menulis seperti ini
fungsi getMax2(arr){
return Math.max.apply(null,arr);
}
peringatan(getMax2(arr)); //9
//Kedua potongan kode tersebut memiliki tujuan yang sama, namun getMax2 lebih elegan, efisien, dan lebih ringkas.
//Contoh lainnya adalah metode push pada array.
var arr1=[1,3,4];
var arr2=[3,4,5];
//Jika kita ingin memperluas arr2, tambahkan ke arr1 satu per satu, dan terakhir biarkan arr1=[1,3,4,3,4,5]
//arr1.push(arr2) jelas tidak berfungsi. Karena melakukan ini akan mendapatkan [1,3,4,[3,4,5]]
//Kita hanya dapat menggunakan loop untuk melakukan push satu per satu (tentu saja Anda juga dapat menggunakan arr1.concat(arr2), tetapi metode concat tidak mengubah arr1 itu sendiri)
var arrLen=arr2.panjang;
untuk(var i=0;i<arrLen;i++){
arr1.push(arr2[i]);
}
//Sejak diperkenalkannya Apply, segalanya menjadi sangat sederhana
Array.prototype.push.apply(arr1,arr2); //Sekarang arr1 adalah hasil yang diinginkan</SPAN>