جاوااسکریپت: تنظیم location.href در مقابل location
چه زمانی location را به یک رشته URL تنظیم میکنید در مقابل تنظیم location.href؟
location = "http://www.stackoverflow.com";
در مقابل
location.href = "http://www.stackoverflow.com";
مرجع شبکه توسعهدهندگان موزیلا
پاسخ شماره ۱
شما ممکن است location را مستقیماً تنظیم کنید چون کمی کوتاهتر است. اگر میخواهید مختصر باشید، معمولاً میتوانید window. را هم حذف کنید.
تخصیص URL به هر دو location.href و location برای کار در JavaScript 1.0 تعریف شده است، در زمان Netscape 2، و از آن زمان در هر مرورگری پیادهسازی شدهاند. بنابراین انتخاب با شماست و میتوانید هر کدام را که واضحتر میدانید، استفاده کنید.
پاسخ شماره ۲
حتی اگر هر دو کار کنند، من از دومی استفاده میکنم.
پاسخ شماره ۳
همانطور که قبلاً گفته شد. اما، بهتر است از نسخه .href استفاده کنید.
پاسخ شماره ۴
چند سال پیش، location در IE برای من کار نمیکرد و location.href کار میکرد (و هر دو در سایر مرورگرها کار میکردند). از آن زمان، من همیشه فقط از location.href استفاده کردهام و دیگر هرگز مشکلی نداشتهام. نمیتوانم به یاد بیاورم که آن نسخه کدام IE بود.
پاسخ شماره ۵
یکی از تفاوتهایی که باید به یاد داشته باشید، البته.
فرض کنید میخواهید با استفاده از URL فعلی، یک URL بسازید. کد زیر در واقع شما را هدایت میکند، زیرا String.prototype.replace را فراخوانی نمیکند بلکه Location.prototype.replace را فراخوانی میکند:
nextUrl = window.location.replace('/step1', '/step2');
کدهای زیر کار میکنند:
// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');
// href property
nextUrl = window.location.href.replace('/step1', '/step2');
پاسخ شماره ۶
فقط برای روشن شدن، شما نمیتوانید location.split('#') را انجام دهید، زیرا location یک شیء است، نه یک رشته. اما میتوانید location.href.split('#'); را انجام دهید زیرا location.href یک رشته است.
پاسخ شماره ۷
با TypeScript، از window.location.href استفاده کنید زیرا window.location از نظر فنی یک شیء است که شامل میشود:
Properties
hash
host
hostname
href <--- you need this
pathname (relative to the host)
port
protocol
search
تنظیم window.location باعث ایجاد خطای نوع میشود، در حالی که window.location.href از نوع رشته است.
منبع
