ini dalam JavaScript Show Meningkatkan Artikel Simpan Artikel Seperti Artikel
Meningkatkan Artikel Simpan Artikel kata kunci ini dalam javascript selalu menyimpan referensi ke satu objek, yang menentukan baris konteks eksekusi kode saat ini. Fungsi, dalam JavaScript, pada dasarnya adalah objek. Seperti objek, mereka dapat ditugaskan ke variabel, diteruskan ke fungsi lain, dan dikembalikan dari fungsi. Dan seperti halnya objek, mereka memiliki propertinya sendiri. Salah satu properti ini adalah ini Nilai yang disimpan ini adalah konteks eksekusi saat ini dari program JavaScript. Jadi, ketika digunakan di dalam suatu fungsi, nilai ini akan berubah tergantung pada bagaimana fungsi itu didefinisikan, bagaimana itu dipanggil dan konteks eksekusi default. kata kunci ini akan merujuk ke objek yang berbeda tergantung bagaimana kata kunci itu digunakan. Fungsi, dalam JavaScript, dapat dipanggil dengan berbagai cara ini dengan pemanggilan fungsiPemanggilan fungsi mengacu pada proses memanggil fungsi menggunakan namanya atau ekspresi yang mengevaluasi objek fungsi diikuti dengan serangkaian tanda kurung buka dan tutup pertama (dimasukkannya tanda kurung menunjukkan bahwa kami meminta mesin JavaScript untuk segera menjalankan fungsi JavaScript
undefined undefined0 undefined undefined1 undefined undefined2 undefined undefined3 undefined undefined4 undefined undefined5 undefined undefined1 undefined undefined7
undefined undefined_8 undefined undefined_9 John is 31 years old_0 John is 31 years old_1 John is 31 years old_2 ini di dalam fungsi doSomething, jika dipanggil melalui pemanggilan fungsi seperti di atas, memiliki nilai objek global, yang merupakan objek jendela di lingkungan browser JavaScript
undefined undefined0 undefined undefined1 undefined undefined2 John is 31 years old9
[object Object] 1 [object Object] 20 [object Object] 1 [object Object] 21 undefined undefined4 [object Object] 1 [object Object] 23 [object Object] 1 [object Object] 24 [object Object] 1 [object Object] 25 [object Object] 1 [object Object] 26 undefined undefined1 undefined undefined7
undefined undefined_8 undefined undefined_9 [object Object] [object Window] NaN [object Object] [object Window] NaN1 John is 31 years old_0 John is 31 years old_1 [object Object] [object Window] NaN [object Object] [object Window] NaN4 Keluaran. test value Namun, ini tidak selalu terjadi. Jika fungsi doSomething() berjalan dalam mode ketat, itu akan mencatat tidak terdefinisi alih-alih objek jendela global. Ini karena, dalam mode ketat (ditunjukkan oleh garis. 'gunakan ketat';), nilai default ini, untuk objek fungsi apa pun, disetel ke tidak ditentukan alih-alih objek global. Sebagai contoh. JavaScript
undefined undefined0 undefined undefined1 undefined undefined2 undefined undefined3 undefined undefined4 [object Object] [object Object] 1 [object Object] [object Object] 23 undefined undefined4 [object Object] [object Object] 1 [object Object] [object Object] 25 [object Object] 1 [object Object] 26
[object Object] 1 [object Object] 20 [object Object] [object Object] 1 [object Object] [object Object] 28 undefined undefined4 John is 21 years old0 [object Object] 1 [object Object] 23 John is 21 years old2 John is 21 years old3 John is 21 years old4 John is 21 years old5 undefined undefined2 John is 21 years old7 John is 21 years old8 John is 21 years old9 John is 21 years old8 <!DOCTYPE html> 1
John is 21 years old0 [object Object] 1 [object Object] 23 John is 21 years old4 John is 21 years old5 undefined undefined7 undefined undefined4 <!DOCTYPE html> 9undefined undefined1 undefined undefined7
undefined undefined_8 undefined undefined_9 John is 31 years old_0 John is 31 years old_1
Keluaran. undefined undefined ini dengan pemanggilan metodeFungsi, ketika didefinisikan sebagai bidang atau properti objek, disebut sebagai metode. JavaScript
undefined undefined0 undefined undefined1 <body> 2undefined undefined4 <body> 4<body> 5<body> 6undefined undefined4 <body> 8undefined undefined4 undefined undefined00 undefined undefined2 undefined undefined02 John is 21 years old5 John is 21 years old0 [object Object] 1 [object Object] 23 undefined undefined06 undefined undefined07 John is 21 years old2 [object Object] 1 [object Object] 23 undefined undefined10 undefined undefined11________0______12 undefined undefined4 undefined undefined7 undefined undefined1 undefined undefined7 [object Object] 1 [object Object] 20 undefined undefined18 [object Object] 1 [object Object] 20 undefined undefined20 undefined undefined21 John is 31 years old0 John is 31 years old_1 undefined undefined_24 Keluaran. John is 31 years old Dalam contoh kode di atas, logInfo() adalah metode dari objek person dan kita memanggilnya menggunakan pola pemanggilan objek. Yaitu, kami menggunakan pengakses properti untuk mengakses metode yang merupakan bagian dari objek Ini pada gilirannya akan membantu kita memahami apa konteks ini dalam fungsi tertentu karena, dalam setiap pemanggilan ini, nilai this berbeda Sebagai contoh. JavaScriptundefined undefined0 undefined undefined1 undefined undefined27 undefined undefined4________0______29 undefined undefined4 undefined undefined31 undefined undefined2 undefined undefined02 undefined undefined_1 John is 21 years old5 undefined undefined36 John is 21 years old5 John is 21 years old0 [object Object] 1 [object Object] 23 John is 21 years old2 undefined undefined41 John is 21 years old4 ________294 undefined undefined_17_______3 undefined undefined45
undefined undefined47 John is 21 years old5 undefined undefined49 [object Object] 1 [object Object] 23 undefined undefined51 undefined undefined4 undefined undefined7 undefined undefined1 undefined undefined55 undefined undefined_1 undefined undefined1 undefined undefined58 undefined undefined1 undefined undefined60 John is 21 years old3 undefined undefined12 undefined undefined1 undefined undefined64 undefined undefined1 undefined undefined66 undefined undefined_67 Keluaran. [object Object] 1 [object Object] 2 Dalam contoh di atas, calc() adalah metode objek tambahan dan karena itu dipanggil menggunakan aturan pemanggilan metode pada baris 9 dan 10. Namun, mari kita lihat satu titik kebingungan utama. Apa yang terjadi pada fungsi yang bersarang di dalam metode objek? JavaScriptundefined undefined0 undefined undefined1 undefined undefined27 undefined undefined4________0______29 undefined undefined4 undefined undefined31 undefined undefined2 undefined undefined02 undefined undefined_1 undefined undefined4 undefined undefined36 undefined undefined4 John is 21 years old0 [object Object] 1 [object Object] 23 John is 21 years old2 undefined undefined41 John is 21 years old4 undefined undefined_1 undefined undefined4 undefined undefined2 undefined undefined89 John is 21 years old5 [object Object] 1 [object Object] 23 undefined undefined92 undefined undefined_1 undefined undefined4 undefined undefined95 undefined undefined4 John is 21 years old0 [object Object] 1 [object Object] 23 John is 21 years old2 undefined undefined41 undefined undefined12 undefined undefined_1 undefined undefined4 undefined undefined49 [object Object] 1 [object Object] 23 undefined undefined45 undefined undefined_1 undefined undefined1 undefined undefined7 undefined undefined49 John is 31 years old11 John is 31 years old12 undefined undefined7 undefined undefined1 undefined undefined55 undefined undefined_1 undefined undefined1 John is 31 years old18 undefined undefined1 undefined undefined60 John is 21 years old3 undefined undefined12 undefined undefined_1 undefined undefined1 John is 31 years old18 undefined undefined1 undefined undefined66 undefined undefined_67 Keluaran. [object Object] [object Window] NaN [object Object] [object Window] NaN Mari kita coba memahami apa yang baru saja terjadi. Saat kita memanggil calc() di baris 14 dan 15 kita menggunakan pemanggilan metode yang menyetel ini untuk ditambahkan di calc(). Ini dapat diverifikasi menggunakan pernyataan log pada baris 4 Bagaimana kita memecahkan masalah ini? Salah satu solusinya adalah dengan menetapkan nilai ini dari fungsi luar ke variabel yang akan digunakan dalam fungsi bersarang seperti itu. JavaScriptundefined undefined0 undefined undefined1 undefined undefined27 undefined undefined4________0______29 undefined undefined4 undefined undefined31 undefined undefined2 undefined undefined02
John is 21 years old5 undefined undefined36 John is 21 years old5 John is 21 years old0 [object Object] 1 [object Object] 23 John is 21 years old2 undefined undefined41 John is 21 years old4
John is 31 years old_46 John is 31 years old47 John is 31 years old_46 John is 31 years old49 John is 31 years old_46 John is 31 years old51 [object Object] 1 [object Object] 23 [object Object] 1 [object Object] 26
John is 21 years old5 undefined undefined2 John is 31 years old56 John is 21 years old5 John is 31 years old58
John is 31 years old_59 John is 31 years old60 John is 31 years old_59 John is 31 years old62 ________294 undefined undefined_10_______64
John is 31 years old_65 undefined undefined36
John is 31 years old68 undefined undefined41 undefined undefined12
undefined undefined49 John is 31 years old73 John is 21 years old5 undefined undefined7 John is 21 years old5 undefined undefined49 John is 31 years old11 undefined undefined4 undefined undefined7 undefined undefined1 undefined undefined55 undefined undefined1 undefined undefined58 undefined undefined1 undefined undefined60 John is 21 years old3 undefined undefined12
undefined undefined1 undefined undefined64 undefined undefined1 undefined undefined66 John is 31 years old_93 Keluaran. [object Object] [object Object] 1 [object Object] [object Object] 2 Solusi lain untuk masalah ini melibatkan penggunaan bind(), call(), atau apply(), yang akan segera kita bahas ini dengan doa konstruktorDoa konstruktor dilakukan ketika kata kunci baru diikuti oleh nama fungsi, dan satu set tanda kurung buka dan tutup (dengan atau tanpa argumen) Sebagai contoh. biarkan person1= Orang baru('John', 21); Di sini, person1 adalah objek yang baru dibuat dan People adalah fungsi konstruktor yang digunakan untuk membuat objek ini. Pemanggilan konstruktor adalah salah satu dari beberapa cara untuk membuat objek dalam JavaScript. Apa yang sebenarnya terjadi saat kita menggunakan kata kunci baru bersamaan dengan nama fungsi? . Mari kita mempelajarinya dengan contoh berikut. JavaScriptundefined undefined0 undefined undefined1 John is 31 years old96 undefined undefined2 John is 31 years old98 John is 31 years old_59 [object Object] 1 [object Object] 23 [object Object] 1 [object Object] 201 John is 31 years old_59 [object Object] 1 [object Object] 23 [object Object] 1 [object Object] 204 undefined undefined_1 undefined undefined4 [object Object] 1 [object Object] 23 [object Object] 1 [object Object] 208 undefined undefined2 undefined undefined02 John is 31 years old46 John is 21 years old0 [object Object] 1 [object Object] 23 undefined undefined06 undefined undefined07 John is 21 years old2 [object Object] 1 [object Object] 23 undefined undefined10 [object Object] 1 [object Object] 219________0______12 Apakah kata kunci ini penting dalam JavaScript?Tetapi ini sangat penting untuk menulis kode JavaScript yang lebih canggih . Dalam JavaScript, kata kunci ini memungkinkan kita untuk. Gunakan kembali fungsi dalam konteks eksekusi yang berbeda. Artinya, suatu fungsi yang pernah ditentukan dapat dipanggil untuk objek yang berbeda menggunakan kata kunci ini.
Apakah kata kunci atau variabel ini dalam JavaScript?kata kunci ini mendefinisikan objek, objek yang mengeksekusi bit kode JavaScript saat ini. Dalam JavaScript, variabel “ini” adalah variabel yang didapat setiap konteks eksekusi, dalam pemanggilan fungsi reguler. Setiap fungsi JavaScript memiliki referensi ke konteks eksekusi saat ini saat mengeksekusi, disebut ini.
Apa artinya ini => dalam JavaScript?Ini adalah fitur baru yang diperkenalkan di ES6 dan disebut fungsi panah . Bagian kiri menunjukkan input dari suatu fungsi dan bagian kanan menunjukkan output dari fungsi itu.
Apa kata kunci ini di ES6?Sementara di ES5 'ini' merujuk ke induk fungsi, di ES6, fungsi panah menggunakan pelingkupan leksikal — 'ini' mengacu pada cakupan sekitarnya saat ini dan tidak lebih jauh< . Jadi fungsi batin tahu untuk mengikat fungsi batin saja, dan bukan metode objek atau objek itu sendiri. . Thus the inner function knew to bind to the inner function only, and not to the object's method or the object itself. |