1. Penggunaan kelas dasar
Metode 1:
Salinan kode adalah sebagai berikut:
fungsi sth (a) // fungsi konstruktor
{
this.a = a;
this.fun = output; // fungsi anggota
}
output fungsi (a, b, c)
{
document.write (this.a);
}
//Panggilan
var s = sth baru (250);
S.Fun (1, 2, 3);
ouput (1, 2, 3); // jika output salah sebelum sth
Metode 2:
Salin kode sebagai berikut: fungsi sth (a)
{
this.a = a;
this.output = function ()
{
document.write (this.a);
}
}
var s = sth baru (2);
s.output (); // output 2
2. Warisan
Metode 1:
Salin kode sebagai berikut: Fungsi A (x)
{
this.x = x;
}
Fungsi B (X, Y)
{
// Metode 1
/*
this.construct = a;
this.construct (x);
hapus ini.construct;
*/
// Metode 2
//A.call(This, x);
// Metode 3
A.Apply (ini, array baru (x)); // Ini juga bisa A.Apply (ini, argumen), tetapi urutan parameter argumen harus benar
this.y = y;
this.print = function ()
{
document.write ("x =", x,
", y =", y);
}
}
var b = B baru (1, 2);
b.print ();
waspada (b instance dari a); // output false
Keuntungan: warisan berganda dapat dicapai (cukup hubungi beberapa panggilan)
kekurangan:
・ Harus digunakan sebagai konstruktor
・ Gunakan instance dari operator untuk mengoperasikan hasil warisan ini menjadi false
Metode 2:
Salin kode sebagai berikut: Fungsi a ()
{
}
A.prototype.x = 1;
Fungsi B ()
{
}
B.prototype = baru a (); // Tidak dapat mengambil parameter!
B.prototype.y = 2;
B.prototype.print = function ()
{
document.write (this.x, ",", this.y, "<br>");
}
var b = baru b ();
b.print ();
document.write (b instance dari a); // output true
kekurangan:
・ Tidak dapat mencapai warisan berganda
・ Konstruktor tidak memiliki parameter
Tips
Biasanya menggunakan mode hybrid, keduanya
Salinan kode adalah sebagai berikut:
Fungsi A (x)
{
this.x = x;
}
A.prototype.printx = function () // tulis this.printx = fungsi .... itu juga mungkin, sama di bawah ini
{
document.write (this.x, "<br>");
}
Fungsi B (X, Y)
{
A.call (ini, x);
this.y = y;
}
B.prototype = baru a (); // Tidak dapat mengambil parameter!
B.prototype.printxy = function ()
{
document.write (this.x, ",", this.y, "<br>");
}
var b = B baru (1, 2);
b.printx (); // output 1
b.printxy (); // output 1, 2
document.write (b instance dari a); // output true
3. Penggunaan fungsi anggota statis
Salin kode sebagai berikut: fungsi sth (a)
{
this.a = a;
}
sth.fun = fungsi
{
Document.write (SA);
}
var s = sth baru (2);
sth.fun (s); // output 2
Iv. Pelepasan objek
Salin kode sebagai berikut: var obj = objek baru; // Obj adalah referensi
obj = null; // Dereference akan secara otomatis mengoleksi sampah; Jika Anda perlu melepaskan objek ini sama sekali, semua referensi harus ditugaskan ke NULL
V. Objek Fungsi
Salin kode sebagai berikut: var v = fungsi baru ("arg1", "arg2", "document.write (arg1 + arg2);"); // Tentukan objek fungsi dengan parameter arg1 dan arg2 masing -masing
V (1, 2); // akan output 3
6. Fungsi Callback
Salin kode sebagai berikut: Function Callback (func, arg)
{
func (arg);
}
function fun (arg)
{
document.write (arg);
}
// callback (func, "sb"); // metode ini tidak berhasil
var func = fungsi baru ("arg", "fun (arg);");
// Tentu saja, func (arg) juga dapat diganti dengan kode eksekusi tertentu.
// tetapi jika kode fungsi sangat besar, lebih baik melakukan ini
Callback (func, "SB");
7. Overloading fungsi
Salin kode sebagai berikut: Function fun ()
{
sakelar (argumen.length)
{
Kasus 1:
document.write (argumen [0]);
merusak;
Kasus 2:
document.write (argumen [0] + argumen [1]);
merusak;
bawaan:
Document.write ("Kesalahan!");
merusak;
}
}
menyenangkan (1);
menyenangkan (1, 2);
8. Gunakan penutupan fungsi untuk mengimplementasikan fungsi dengan "variabel statis"
Salin kode sebagai berikut: Function fun ()
{
var v = 1;
function fun2 ()
{
++ v;
document.write (v);
document.write ("<br>");
mengembalikan v;
}
return fun2;
}
var func = fun ();
func (); // output 2
func (); // output 3
func (); // output 4