Rumah >tutorial komputer >pengetahuan komputer >Bagaimanakah JavaScript mentakrifkan kaedah seperti sorok yang boleh dipanggil dengan satu klik
Kaedah prototaip. . . . prototaip
Sebagai contoh, tentukan fungsi untuk Array tatasusunan
Array.prototype.in_array = fungsi ($rentetan) { untuk (var i = 0; i
{
untuk (i = 0; i
kembali benar;
}
}
kembali palsu;
}
Anda boleh panggil sahaja
var a = Tatasusunan baharu('a');
a.in_array('a');
Semak sama ada ia wujud
Dalam cth. rentetan
String.prototype.trim = function()
{
kembalikan ini.ganti(/^s*|s*$/g, '');
}
Anda boleh panggil sahaja
var a = 'abcdefg';
a.trime();
Ini akan menghilangkan ruang di kedua-dua belah pihak
Begitu juga dengan fungsi tersuai Mula-mula buat fungsi dan gunakan prototaip untuk menambah kaedah padanya.
Beberapa cara untuk mentakrifkan objek Javascript
1 Kaedah kilang: Mula-mula buat objek, kemudian tambah kaedah dan sifat pada objek. Selepas penutupan, elakkan menggunakan operator baharu untuk mencipta objek. Walaupun pendekatan ini mempunyai beberapa kelemahan, seperti apabila mentakrifkan kaedah di dalam fungsi kilang, fungsi baharu akan dibuat setiap kali ia dipanggil.
kilang berfungsi(nama, orang, alamat, masa){
var tmp=Objek baharu;
tmp.name=name;
tmp.person=person;
tmp.address=address;
tmp.workTime=function(){
alert("Masa kita mula bekerja ialah" + masa);
}
kembali tmp;
}
var factory1 = kilang("ubat", 100, "Huashan Rd", 10);
var factory2 = factory("TCMdrugs", 100, "hongqiao Rd", 11);
factory1.workTime();
factory2.workTime();//Di sini, factory1 dan factory2 mempunyai kaedah yang berbeza
Walaupun masalah ini boleh diperbaiki dengan cara berikut, ia tidak mempunyai enkapsulasi yang baik
kilang berfungsi(nama, orang, alamat, masa){
var tmp=Objek baharu;
tmp.name=name;
tmp.person=person;
tmp.address=address;
tmp.workTime=workTime();
kembali tmp;
}
fungsi masa kerja(){
alert("Masa kita mula bekerja ialah" + this.time);
}
2 Kaedah pembina bermaksud menggunakan kata kunci ini di dalam pembina untuk mencipta objek, dan ia perlu dijadikan instantiated melalui operator baharu apabila menggunakannya. Walau bagaimanapun, kaedah ini mempunyai masalah yang sama seperti kaedah kilang, iaitu, setiap kali pembina dipanggil, objek fungsi baru akan dicipta, menyebabkan penciptaan fungsi berulang.
konstruk fungsi(nama, orang, alamat, masa) { //Tulis logik kod anda di sini }
this.name=name;
ini.orang=orang;
ini.alamat=alamat;
this.workTime=function(){
alert("Masa kita mula bekerja ialah" + this.time);
};
}
3. Kaedah prototaip: Gunakan atribut prototaip untuk melaksanakan atribut dan kaedah Anda boleh menyemak jenis objek melalui instanceof, yang menyelesaikan masalah mencipta fungsi berulang kali. Walau bagaimanapun, perlu diingatkan bahawa sifat tidak boleh dimulakan dengan lulus parameter.
kereta berfungsi(){
}
Car.prototype.color = "merah";
Car.prototype.doors = 4;
Car.prototype.mpg = 23;
Car.prototype.showColor = function() {
makluman(warna.ini);
};
var car1 = new Car();
var car2 = new Car();
Tetapi jika anda menghadapi situasi berikut, sesuatu akan berlaku lagi
Car.prototype.drivers = ["mike", "sue"];
car1.drivers.push("matt");
alert(car1.drivers); //Output "mike,sue,matt"
alert(car2.drivers); // Output "mike, sue, matt"
pemandu ialah penunjuk kepada objek Tatasusunan, dan kedua-dua kejadian Kereta merujuk kepada tatasusunan yang sama.
4. Kaedah pembina/prototaip campuran: penyelesaian kepada kaedah prototaip
Kereta berfungsi(sColor, iDoors, iMpg) { this.color = sColor; ini.pintu = iDoors; this.mpg = iMpg; }
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = ["mike", "sue"];
}
Car.prototype.showColor = fungsi () { // kod anda }
makluman(warna.ini);
};
var car1 = Kereta baharu("merah", 4, 23);
var car2 = Kereta baharu("biru", 3, 25);
car1.drivers.push("matt");
amaran(kereta1.pemandu);
maklum(kereta2.pemandu);
5. Kaedah prototaip dinamik: Ini adalah kaedah yang sangat disyorkan Ia mengelakkan masalah yang berlaku dalam kaedah sebelumnya dan memberikan gaya pengekodan yang lebih mesra.
Kereta berfungsi(sColor, iDoors, iMpg) { this.color = sColor; ini.pintu = iDoors; this.mpg = iMpg; }
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = ["mike", "sue"];
jika(jenis Kereta.dimulakan == "tidak ditentukan"){
Car.prototype.showColor = fungsi () { // kod anda }
makluman(warna.ini);
};
Kereta.dimulakan = benar;
}
}
var car1 = Kereta baharu("merah", 4, 23);
var car2 = Kereta baharu("biru", 3, 25);
car1.drivers.push("matt");
amaran(kereta1.pemandu);
maklum(kereta2.pemandu);
6. Kaedah kilang campuran: Ia agak serupa dengan kaedah kilang, tetapi menggunakan kata kunci baharu untuk instantiasi. Walaupun ia mempunyai kelemahan yang sama seperti kaedah kilang, ia tidak digalakkan.
Atas ialah kandungan terperinci Bagaimanakah JavaScript mentakrifkan kaedah seperti sorok yang boleh dipanggil dengan satu klik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!