Dalam setiap latihan metode sejauh ini, metode dijelaskan sebagai "fungsi serupa" atau "mirip dengan fungsi", karena mereka bahkan menggunakan kata kunci dan sintaks yang sama. Satu-satunya perbedaan yang saya kumpulkan adalah bahwa mereka digunakan di dalam objek, sedangkan fungsinya tidak. Apakah ini satu-satunya alasan untuk menyebut mereka "metode"? Show Saya akan merasa lebih terbantu jika menyebutnya "fungsi di dalam objek", karena itu adalah ekspresi yang lebih deskriptif Di sini kami baru saja menggunakan Ekspresi Fungsi untuk membuat fungsi dan menugaskannya ke properti 2 objekMaka kita bisa menyebutnya sebagai 3. Pengguna sekarang dapat berbicaraFungsi yang merupakan properti dari suatu objek disebut metodenya Jadi, di sini kita punya metode 4 dari objek 1Tentu saja, kita bisa menggunakan fungsi yang telah dideklarasikan sebagai metode, seperti ini _Pemrograman berorientasi objek Saat kita menulis kode kita menggunakan objek untuk mewakili entitas, singkatnya itu disebut pemrograman berorientasi objek. “OOP” OOP adalah hal yang besar, ilmu tersendiri yang menarik. Bagaimana cara memilih entitas yang tepat? . Elemen Perangkat Lunak Berorientasi Objek yang Dapat Digunakan Kembali” oleh E. Gama, R. Helm, R. Johnson, J. Vissides atau "Analisis dan Desain Berorientasi Objek dengan Aplikasi" oleh G. Booch, dan lainnya Ada sintaks yang lebih pendek untuk metode dalam objek literal
Seperti yang ditunjukkan, kita dapat menghilangkan _6 dan hanya menulis 7Sejujurnya, notasi tidak sepenuhnya identik. Ada perbedaan halus yang terkait dengan pewarisan objek (akan dibahas nanti), tetapi untuk saat ini hal itu tidak menjadi masalah. Di hampir semua kasus, sintaks yang lebih pendek lebih disukai Biasanya metode objek perlu mengakses informasi yang disimpan dalam objek untuk melakukan tugasnya Misalnya, kode di dalam _3 mungkin memerlukan nama 1Untuk mengakses objek, metode dapat menggunakan kata kunci 0Nilai 0 adalah objek "sebelum titik", yang digunakan untuk memanggil metodeContohnya
Di sini selama pelaksanaan _3, nilai 0 akan menjadi 1Secara teknis, ini juga memungkinkan untuk mengakses objek tanpa 0, dengan merujuknya melalui variabel luar
… Tapi kode seperti itu tidak bisa diandalkan. Jika kami memutuskan untuk menyalin _1 ke variabel lain, mis. g. _7 dan menimpa 1 dengan sesuatu yang lain, maka itu akan mengakses objek yang salahItu ditunjukkan di bawah ini
Jika kita menggunakan _9 alih-alih 0 di dalam 1, maka kode akan berfungsiDalam JavaScript, kata kunci 0 berperilaku tidak seperti kebanyakan bahasa pemrograman lainnya. Itu dapat digunakan dalam fungsi apa pun, meskipun itu bukan metode objekTidak ada kesalahan sintaks dalam contoh berikut
Nilai _0 dievaluasi selama run-time, tergantung pada konteksnyaMisalnya, di sini fungsi yang sama ditugaskan ke dua objek berbeda dan memiliki "ini" yang berbeda dalam panggilan
Aturannya sederhana. jika _4 dipanggil, maka 0 adalah 6 selama panggilan 7. Jadi _1 atau 9 pada contoh di atasMemanggil tanpa objek. Kami bahkan dapat memanggil fungsi tanpa objek sama sekali
Dalam hal ini 0 adalah 2 dalam mode ketat. Jika kami mencoba mengakses 9, akan terjadi kesalahanDalam mode non-ketat nilai 0 dalam kasus seperti itu akan menjadi objek global ( 5 di browser, kita akan membahasnya nanti di bab Objek global). Ini adalah perilaku historis yang 6 diperbaikiBiasanya panggilan seperti itu adalah kesalahan pemrograman. Jika ada 0 di dalam suatu fungsi, fungsi tersebut diharapkan dipanggil dalam konteks objekKonsekuensi dari Jika Anda berasal dari bahasa pemrograman lain, maka Anda mungkin terbiasa dengan gagasan " 0 terikat", di mana metode yang didefinisikan dalam suatu objek selalu memiliki 0 referensi objek ituDalam JavaScript 0 adalah "gratis", nilainya dievaluasi pada waktu panggilan dan tidak bergantung pada di mana metode dideklarasikan, melainkan pada objek apa yang "sebelum titik"Konsep run-time dievaluasi _0 memiliki plus dan minus. Di satu sisi, suatu fungsi dapat digunakan kembali untuk objek yang berbeda. Di sisi lain, fleksibilitas yang lebih besar menciptakan lebih banyak kemungkinan kesalahanDi sini posisi kita bukan untuk menilai apakah keputusan desain bahasa ini baik atau buruk. Kami akan mengerti bagaimana bekerja dengannya, bagaimana mendapatkan keuntungan dan menghindari masalah Fungsi panah itu spesial. mereka tidak memiliki "milik" 0. Jika kita mereferensikan 0 dari fungsi seperti itu, ini diambil dari fungsi luar "normal"Misalnya, di sini _5 menggunakan 0 dari metode luar 3 0Itu adalah fitur khusus dari fungsi panah, ini berguna ketika kita sebenarnya tidak ingin memiliki 0 yang terpisah, melainkan mengambilnya dari konteks luar. Nanti di bab Fungsi panah ditinjau kembali, kita akan masuk lebih dalam ke fungsi panah
Nilai _0 didefinisikan pada saat run-time
Harap dicatat bahwa fungsi panah itu spesial. mereka tidak memiliki 0. Ketika _0 diakses di dalam fungsi panah, itu diambil dari luar
Bagaimana Anda melewatkan fungsi di dalam objek?Untuk meneruskan objek sebagai argumen, kita menulis nama objek sebagai argumen sambil memanggil fungsi dengan cara yang sama seperti kita melakukannya untuk variabel lain. Syntax: function_name(object_name); Example: In this Example there is a class which has an integer variable 'a' and a function 'add' which takes an object as argument.
Bagaimana kita bisa memanggil metode yang ada di dalam objek?Fungsi yang merupakan properti objek disebut metodenya . Jadi, di sini kita punya metode sayHi dari pengguna objek. Tentu saja, kita bisa menggunakan fungsi yang telah dideklarasikan sebagai metode, seperti ini. biarkan pengguna = { //. }; . "); } // lalu tambahkan sebagai pengguna metode.
Bagaimana cara mendeklarasikan fungsi dalam objek di JavaScript?6 Cara Mendeklarasikan Fungsi JavaScript . Kode JavaScript yang membentuk badan fungsi Daftar parameter Variabel dapat diakses dari lingkup leksikal Nilai yang dikembalikan Konteks ini ketika fungsi dipanggil Bernama atau fungsi anonim Variabel yang menyimpan objek fungsi Bisakah saya memiliki fungsi di dalam objek JavaScript?Anda tidak perlu lagi menentukan kata kunci fungsi saat mendefinisikan fungsi di dalam objek . Opsi pertama dengan fungsi bernama. const myObj = { myMethod(params) { //. lakukan sesuatu di sini }, myOtherMethod(params) { //. lakukan sesuatu di sini}, Obj bersarang. {MetodeSayaNested(params) { //. lakukan sesuatu di sini } } }; |