Kapan Anda akan mengatur location
ke string URL versus pengaturan location.href
?
location = "http://www.stackoverflow.com";
vs.
location.href = "http://www.stackoverflow.com";
javascript
tdk masuk akal
sumber
sumber
location.href
surel gagal karena kebijakan asal-sama: javascript.info/tutorial/…replace
danassign
: stackoverflow.com/q/1865837/632951 , stackoverflow.com/q/7703689/632951 , stackoverflow.com/q/10302905/632951Jawaban:
Anda mungkin mengatur
location
langsung karena sedikit lebih pendek. Jika Anda mencoba untuk menjadi singkat, Anda biasanya dapat menghilangkannyawindow.
juga.Penugasan URL untuk keduanya
location.href
danlocation
didefinisikan untuk bekerja di JavaScript 1.0, kembali di Netscape 2, dan telah diterapkan di setiap browser sejak saat itu. Jadi pilihlah dan gunakan yang paling jelas menurut Anda.sumber
Bahkan jika keduanya berfungsi, saya akan menggunakan yang terakhir.
location
adalah objek, dan menetapkan string ke objek tidak menjadi pertanda baik untuk keterbacaan atau pemeliharaan.sumber
window.location
: tidak diperlukanSAME ORIGIN
.location = 'http://www.example.com'
tampaknya sangat mudah dibaca. Meskipun demikian, sebagai kasus khusus. Itu kompatibel ke belakang dan akan tetap kompatibel di masa mendatang.Seperti yang telah dikatakan,
.location
adalah sebuah objekTetapi orang itu menyarankan untuk menggunakan keduanya.Tapi, Anda akan lebih baik menggunakan.href
versi ini.Objek memiliki properti default yang, jika tidak ditentukan, diasumsikan. Dalam kasuslocation
objek, ia memiliki properti yang disebut.href
. Dan dengan tidak menentukan properti APA SAJA selama penugasan, itu akan menganggap "href" secara default.Ini semua baik-baik saja sampai versi model objek yang lebih baru berubah dan tidak ada lagi properti default, atau properti default diubah. Kemudian program Anda rusak secara tak terduga.
Jika Anda maksudhref
, Anda harus menentukanhref
.sumber
location
berfungsi karena properti didefinisikan memiliki perilaku penugasan khusus ini di JavaScript 1.0 dan sejak itu setiap browser menerapkannya. HTML5 sekarang membutuhkannya. Jadi sementara itu mungkin lebih cantik atau lebih konsisten untuk ditugaskan.href
, tidak ada keuntungan kompatibilitas mundur atau maju untuk melakukannya.window.location = url
lebih cantiklocation = url
lebih manisBeberapa tahun yang lalu,
location
tidak bekerja untuk saya di IE danlocation.href
(dan keduanya bekerja di browser lain). Sejak itu saya selalu menggunakanlocation.href
dan tidak pernah mengalami kesulitan lagi. Saya tidak ingat versi IE yang mana.sumber
strict mode
chrome akan melempar pengecualian jika Anda mencoba untuk menetapkan langsunglocation
juga, jadi saya selalu menggunakanlocation.href
Hanya untuk memperjelas, Anda tidak bisa melakukannya
location.split('#')
,location
adalah objek, bukan string. Tetapi yang bisa Anda lakukanlocation.href.split('#');
karenalocation.href
merupakan string.sumber
Namun, ada satu perbedaan yang perlu diingat.
Katakanlah Anda ingin membuat beberapa URL menggunakan URL saat ini. Kode berikut sebenarnya akan mengarahkan Anda, karena itu tidak memanggil
String.replace
tetapiLocation.replace
:Kode berikut berfungsi:
sumber
Dengan menggunakan naskah
window.location.href
sebagaiwindow.location
secara teknis obyek yang berisi:Pengaturan
window.location
akan menghasilkan kesalahan tipe, sedangkanwindow.location.href
tipe string.Sumber
sumber