Dalam JavaScript, fungsi hukum apa pun dapat digunakan sebagai konstruktor objek, yang mencakup kedua fungsi bawaan dalam sistem dan fungsi yang ditentukan oleh pengguna. Setelah fungsi dieksekusi sebagai konstruktor, properti di dalamnya akan merujuk pada fungsi itu sendiri.
Secara umum, konstruktor tidak mengembalikan nilai, mereka hanya menginisialisasi objek yang dilewati oleh pointer ini dan tidak mengembalikan apa pun. Jika suatu fungsi memiliki nilai pengembalian, objek yang dikembalikan menjadi nilai ekspresi baru. Dari sudut pandang formal, satu -satunya perbedaan antara fungsi yang dieksekusi sebagai konstruktor atau fungsi biasa, apakah akan menggunakan operator baru.
Deskripsi di atas sebenarnya memiliki makna yang lebih tepat.
Jika nilai pengembalian suatu fungsi adalah data jenis referensi (array, objek, atau fungsi), maka ketika fungsi ini menjalankan konstruksi dengan operator baru sebagai konstruktor, hasil operasi akan diganti dengan nilai pengembaliannya Kali ini, badan konstruktor berada dalam nilai ini, hilang, dan digantikan oleh objek yang dikembalikan. Misalnya:
Salinan kode adalah sebagai berikut:
tes fungsi ()
{
this.a = 10;
fungsi kembali ()
{
kembali 1;
}
}
peringatan m = tes baru ();
var n = test ();
waspada (m); // kembalikan penutupan setelah kembali
Peringatan (n); // Kembalikan penutupan setelah kembali
Nilai hasil berjalan m dan n adalah sama, keduanya adalah penutupan yang dikembalikan oleh fungsi uji, dan objek yang dirujuk oleh ini dan hasil penugasan ini.a = 10 semuanya dibuang.
Jika nilai pengembalian suatu fungsi adalah tipe nilai, maka ketika fungsi melakukan konstruksi menggunakan operator baru sebagai konstruktor, nilai pengembaliannya akan dibuang. Hasil ekspresi baru masih merupakan objek yang dirujuk oleh ini.
Salinan kode adalah sebagai berikut:
tes fungsi ()
{
this.a = 10;
kembali 1;
}
peringatan m = tes baru ();
var n = test ();
alert (m) // return [objek]
Peringatan (n) // Kembalikan 1.