Lingkup fungsi dan titik ini adalah bagian yang sangat penting dari JS. Dibutuhkan logika untuk mengklarifikasi hal ini dan melihat bagaimana logika saya ...
Di bawah ini adalah garis besar yang dapat Anda pilih secara langsung item yang Anda minati untuk dibaca.
• Metode definisi fungsi: Definisi langsung (di bawah jendela, definisi internal), metode objek, metode prototipe objek;
• Metode panggilan fungsi: hubungi langsung, hubungi/terapkan dengan
• Untuk metode fungsi dan objek yang didefinisikan secara langsung, ruang lingkup adalah rantai ruang lingkup pada definisi secara default.
• Untuk fungsi yang ditentukan secara langsung, ini menunjuk ke jendela.
• Untuk metode objek, ini menunjuk ke objek yang dipakai (sesuai dengan kasus di mana objek yang dipakai mengembalikan ini secara default).
• Gunakan Panggilan/Terapkan untuk Mengubah Titik Metode Ini
• Saat mendefinisikan fungsi atau metode, rantai ruang lingkupnya dapat diubah dengan dengan.
Mari kita bicarakan secara detail di bawah ini:
Definisi fungsi, sebagaimana disebutkan dalam garis besar, dapat dibagi menjadi dua jenis: definisi langsung (di bawah jendela, definisi internal), metode objek (atau metode prototipe objek). Dari kode contoh berikut, Anda dapat melihat bahwa fungsi Fn1 dan Fn2 dan metode fungsi objek berasal dari domain yang sesuai ketika fungsi menggunakan nama.
var name = 'name di bawah jendela <br/>'; var resultCon; function fn1 () {resultCon.innerHtml += name;} function myobj () {var name = 'name di bawah myobj <br/>'; this.dofunction = function () {resultCon.innerHtml += name;Apa yang terjadi jika "nama" digantikan oleh "this.name" saat menggunakan nilai nama? Lihat contoh berikut:
var name = 'name di bawah jendela <br/>'; var resultCon; function fn1 () {resultCon.innerHtml += this.name;} function myobj () {var name = 'name di bawah myobj <br/>'; this.dofunction = function () {resultCon.innerHtml += this.name;Dilihat dari hasil, kita dapat memverifikasi item ke -4 dan ke -5 dalam garis besar. Kita juga dapat melihat bahwa ini dan ruang lingkup adalah dua set rantai terpisah, mengikuti logika kueri variabel independen. Logika kueri spesifik akan disebutkan dalam analisis kinerja berikut. Jika Anda seorang pemula, disarankan untuk terlebih dahulu melihat pengetahuan dasar "rantai lingkup JS".
Mengenai metode panggilan suatu fungsi, saya menggunakan contoh berikut untuk menggambarkan artikel ke -2 dan ke -6 dalam garis besar:
var name = 'name di bawah jendela <br/>'; var resultCon; function fn1 () {resultCon.innerHtml += this.name;} function myobj () {var name = 'name di bawah myobj <br/>'; this.dofunction = function () {resultCon.innerHtml += this.name;Penggunaan panggilan dan berlaku saat dipanggil adalah untuk mengubah titik fungsi yang dipanggil ini. Penggunaan dengan adalah untuk mengubah domain kueri variabel dalam fungsi yang dipanggil. Kami menghapus panggilan dan nama dalam contoh di atas dan menambahkan dengan untuk menunjukkan fungsi dengan.
var name = 'name di bawah jendela <br/>'; var resultCon; function fn1 (myscope) {with (myscope) {resultCon.innerHtml += name; }} function myobj (myscope) {var name = 'name di bawah myobj <br/>';Tidak nyaman untuk digunakan, dan Anda perlu menambahkan dengan fungsi yang dipanggil. Beberapa orang mungkin bertanya -tanya apakah Anda dapat menelepon yang berikut untuk mengubah ruang lingkup variabel secara keseluruhan tanpa mengubah fungsi yang dipanggil?
dengan (myscope) {fn1 (); fn2 (); var obj = myobj baru (); obj.dofunction ();}Sayangnya, tidak! Oleh karena itu, hubungi dan terapkan dapat digunakan di mana -mana dalam beberapa kerangka kerja yang matang, tetapi dengan jarang digunakan. Saat menggunakan JShint untuk mendeteksi sintaks JS, titik -titik merah kecil ditandai dengan. Dalam beberapa panduan pengkodean JS, juga disarankan untuk digunakan dengan sesedikit mungkin, karena dengan perubahan rantai variabel kueri default, itu akan membingungkan personel pemeliharaan kemudian, dan beberapa pertimbangan kinerja. Harap gunakan dengan dengan dengan dengan dengan hati -hati.
Artikel di atas sangat memahami ruang lingkup dan arah fungsi JS ini adalah semua konten yang saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.