Dalam JavaScript, ini tidak semestinya hanya ditemui dalam konteks kaedah objek Terdapat juga rujukan ini dalam panggilan fungsi global dan beberapa konteks lain yang berbeza.
Ia boleh menjadi objek global, objek semasa, atau sebarang objek, semuanya bergantung pada bagaimana fungsi itu dipanggil. Terdapat beberapa cara untuk memanggil fungsi dalam JavaScript: sebagai kaedah objek, sebagai fungsi, sebagai pembina, dan menggunakan apply atau call.
1. Panggil sebagai kaedah objek
Dalam JavaScript, fungsi juga merupakan objek, jadi fungsi boleh digunakan sebagai atribut objek Pada masa ini, fungsi dipanggil kaedah objek Apabila menggunakan kaedah panggilan ini, ini secara semula jadi terikat pada objek.
Fungsi ini juga boleh dipanggil terus, dalam hal ini terikat pada objek global. Dalam pelayar, tetingkap ialah objek global. Sebagai contoh, dalam contoh berikut: apabila fungsi dipanggil, ini terikat pada objek global, dan kemudian pernyataan tugasan dilaksanakan, yang bersamaan dengan mengisytiharkan pembolehubah global secara tersirat, yang jelas bukan perkara yang pemanggil mahu.
Salin kod
point.y; //==>0
x; //==>1
y; //==>1
Ini adalah kecacatan reka bentuk dalam JavaScript Kaedah reka bentuk yang betul ialah fungsi dalaman ini harus diikat pada objek yang sepadan dengan fungsi luarnya Untuk mengelakkan kecacatan reka bentuk ini, pengaturcara JavaScript pintar menghasilkan penggantian berubah Kaedah, mengikut konvensyen, pembolehubah biasanya dinamakan itu.
Panggil sebagai pembina
JavaScript menyokong pengaturcaraan berorientasikan objek Tidak seperti bahasa pengaturcaraan berorientasikan objek arus perdana, JavaScript tidak mempunyai konsep kelas, tetapi menggunakan warisan berdasarkan prototaip. Sejajar dengan itu, pembina dalam JavaScript juga sangat istimewa Jika ia tidak dipanggil dengan baru, ia adalah sama seperti fungsi biasa. Sebagai konvensyen lain, pembina bermula dengan huruf besar untuk mengingatkan pemanggil supaya memanggil mereka dengan cara yang betul. Jika dipanggil dengan betul, ini terikat pada objek yang baru dibuat.
Gunakan permohonan atau hubungi untuk membuat panggilan
Mari kita ulangi sekali lagi bahawa dalam JavaScript, fungsi juga merupakan objek, dan objek mempunyai kaedah memohon dan panggilan adalah kaedah objek fungsi. Kedua-dua kaedah ini sangat berkuasa Mereka membenarkan menukar konteks di mana fungsi itu dilaksanakan, iaitu, objek yang terikat. Banyak teknik dan perpustakaan dalam JavaScript menggunakan kaedah ini. Mari lihat contoh konkrit:
Dalam contoh di atas, kami menggunakan pembina untuk menghasilkan objek p1, yang juga mempunyai kaedah moveTo kami menggunakan literal objek untuk mencipta objek lain p2, dan kami melihat bahawa menggunakan apply boleh menggunakan kaedah p1 hingga p2 pada; , kali ini ini juga terikat dengan objek p2. Panggilan kaedah lain juga mempunyai fungsi yang sama, tetapi perbezaannya ialah parameter terakhir tidak diluluskan secara seragam sebagai tatasusunan, tetapi secara berasingan.
Kod adalah seperti berikut: