Rumah > Artikel > hujung hadapan web > Nota Kajian Javascript - Fungsi (5): Constructor_Basic Knowledge
Pembina dalam Javascript juga berbeza berbanding bahasa lain. Sebarang fungsi yang dipanggil dengan kata kunci baharu boleh digunakan sebagai pembina.
Dalam badan pembina, ini menunjuk kepada objek yang baru dibuat. Jika tiada ungkapan pulangan yang dipaparkan dalam badan pembina, maka kami akan mengembalikannya secara lalai, iaitu objek yang baru dibuat.
Kod di atas memanggil Foo sebagai pembina dan menunjuk prototaip (__proto__) objek baharu kepada Foo.prototype.
Jika kita mentakrifkan ungkapan pulangan dalam pembina, pembina akan mengembalikan keseluruhan ungkapan, tetapi ungkapan pulangan ini mestilah objek.
Jika baharu ditinggalkan, fungsi tidak akan dapat mengembalikan objek baharu.
Contoh di atas mungkin juga berfungsi dalam beberapa senario, tetapi disebabkan mekanisme kerja ini dalam Javascript, ini akan menunjuk ke objek global.
Mod Kilang
Untuk dapat melakukannya tanpa kata kunci baharu, pembina perlu mengembalikan nilai secara eksplisit.
Dalam contoh di atas, kesan memanggil Bar fungsi tanpa menggunakan yang baru adalah sama Objek yang baru dibuat yang mengandungi kaedah kaedah akan dikembalikan.
Satu perkara yang perlu diperhatikan di sini ialah Bar() baharu tidak akan mengembalikan Bar.prototype, tetapi objek prototaip kaedah fungsi dalam ungkapan pulangan.
Dalam contoh di atas, tiada perbezaan fungsi antara menggunakan baharu atau tidak.
Buat objek baharu melalui corak kilang
Kita sering diingatkan supaya tidak menggunakan yang baru kerana terlupa penggunaannya akan membawa kepada kesilapan.
Untuk mencipta objek, kami lebih suka menggunakan corak kilang dan membina objek baharu di dalam corak kilang.
var peribadi = 2;
Obj.someMethod = fungsi(nilai) {
This.value = value;
}
obj.getPrivate = function() {
kembali secara peribadi;
}
Kembalikan obj;
}
Walaupun kod di atas kurang terdedah kepada ralat berbanding menggunakan baharu dan akan lebih mudah apabila menggunakan pembolehubah persendirian, ia juga mempunyai beberapa kelemahan:
Oleh kerana objek prototaip tidak boleh dikongsi, lebih banyak memori diperlukan.
Untuk melaksanakan pewarisan, corak kilang perlu menyalin semua kaedah objek lain atau menggunakannya sebagai prototaip objek baharu.
Meninggalkan rantaian prototaip hanya untuk mengelak daripada menggunakan yang baru nampaknya bertentangan dengan semangat bahasa Javascript.
Ringkasan
Walaupun menggunakan yang baru mungkin lebih terdedah kepada ralat, ini tidak menjadi alasan untuk berputus asa menggunakan rantai prototaip. Bagi pendekatan terakhir, ia bergantung kepada keperluan permohonan. Cara terbaik ialah memilih gaya dan berpegang padanya.
Ringkasnya, pembina memulakan objek contoh, dan atribut prototaip objek mewarisi objek contoh.