Pertanyaan Apa perbedaan antara diri dan jendela?


Saya memiliki JavaScript yang berhubungan dengan deteksi apakah halaman dalam bingkai atau tidak. Saya menggunakan top.frames [] dll. Dan semuanya berjalan dengan baik.

Dalam skrip ini saya perhatikan bahwa saya dapat menggunakan "jendela" atau "diri" secara bergantian dan semuanya masih berfungsi. Apakah "jendela" sama dengan "diri" saat digunakan di halaman HTML?


32
2017-09-03 19:21


asal


Jawaban:


Dari Javascript: Panduan Definitif:

Objek Window mendefinisikan sejumlah   properti dan metode yang memungkinkan Anda   untuk memanipulasi jendela browser web.   Ini juga mendefinisikan properti yang merujuk   ke objek penting lainnya, seperti   itu document properti untuk   Objek dokumen. Akhirnya, Jendela   objek memiliki dua referensi diri   properti, window dan self. Kamu   dapat menggunakan variabel global untuk   merujuk langsung ke objek Window.

Singkatnya, keduanya window dan self adalah referensi ke objek Window, yang merupakan objek global dari javascript sisi-klien.


17
2017-09-03 19:32



Berikut penjelasan dan contoh dari halaman MDN untuk window.self:

if (window.parent.frames[0] != window.self) {
   // this window is not the first frame in the list
}

window.self hampir selalu digunakan dalam perbandingan seperti pada contoh di atas, yang mengetahui apakah jendela saat ini adalah subframe pertama dalam bingkai induk.

Mengingat tidak ada orang yang menggunakan framesets hari ini, saya pikir tidak apa-apa untuk mempertimbangkan bahwa tidak ada kasus yang berguna untuk self. Juga, setidaknya di Firefox, pengujian terhadap window dari pada window.self setara.


11
2017-09-03 19:26



self adalah hanya-baca properti yang dapat lebih fleksibel daripada, dan terkadang digunakan untuk mendukung, window langsung. Hal ini karena selfReferensi yang berubah tergantung pada konteks operasi (tidak seperti window.self, yang hanya ada jika window ada). Ini juga bagus untuk perbandingan, seperti yang telah disebutkan orang lain.

Misalnya, jika Anda menggunakan self di dalam Web Worker (yang hidup di latar belakangnya sendiri), self akan benar-benar referensi WorkerGlobalScope.self. Namun, jika Anda menggunakannya self dalam konteks peramban yang normal, self hanya akan mengembalikan referensi ke Window.self (yang memilikinya document, addEventListener(), dan semua hal lain yang biasa Anda lihat).

TL; DR sementara .self di window.self tidak akan ada jika window tidak ada, menggunakan self sendiri akan menunjuk ke Window.self dalam konteks jendela / browser tradisional, atau WorkerGlobalScope.self dalam konteks pekerja web.

Seperti biasa, MDN memiliki ringkasan yang bagus tentang hal ini dalam dokumen JavaScript mereka. :)


Catatan sampingan: Penggunaan dari self di sini tidak boleh bingung dengan pola JS umum mendeklarasikan variabel lokal: var self = this untuk mempertahankan referensi ke konteks setelah beralih.

Anda dapat membaca lebih lanjut tentang itu di sini: Keluar dari Situasi Pengikatan dalam JavaScript.


9
2018-04-26 01:59



window dan self keduanya merujuk pada objek global dari halaman web saat ini.

Untuk info lebih lanjut lihatlah http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific


4
2017-09-03 19:25