Vraag location.href-eigenschap versus methode location.assign ()


Is er een bepaald voordeel / nadeel in het gebruik van JavaScript-geheugen tussen gebruik location.href = url in tegenstelling tot location.assign(url)?

Ik vermoed dat ik me afvraag of er meer geheugen nodig is om toegang te krijgen tot de methode in plaats van het instellen van het eigendom.


44
2018-04-24 17:25


oorsprong


antwoorden:


ik heb altijd gebruikt en nooit problemen gehad met:

location.href = url;

het aanroepen van een functie zou iets trager moeten zijn dan het openen van de woning, maar in termen van geheugen zou er naar mijn bescheiden mening geen groot verschil mogen zijn


24
2018-04-24 17:28



Persoonlijk geef ik er de voorkeur aan om de functie te gebruiken, omdat het aanroepen van een functie me een betere indruk geeft dat iets draait en dat niet alleen de waarde van een variabele verandert.

Maar waarschijnlijk wel, het kan waar zijn dat location.href = url; is sneller dan location.assign(url), hoewel dit kan afhangen van de JavaScript-engine-implementatie, zie de test die ik zojuist heb gemaakt.


25
2018-02-03 14:09



Is er een bepaald voordeel / nadeel in het gebruik van JavaScript-geheugen tussen het gebruik van location.href = url in plaats van location.assign (url)?

NEE

Er is precies nul verschil.

De reden hiervoor is simpel. Elke keer dat uw browser een nieuwe pagina laadt, start het een nieuwe nieuwe Javascript 'VM' met de scripts voor die pagina in die VM. Wanneer u een van de instructies in uw vraag uitvoert, geeft u de browser opdracht een nieuwe pagina te laden, wat betekent dat de huidige VM wordt vernietigd (en geheugen wordt vrijgemaakt) en een volledig nieuwe VM laadt voor de nieuwe pagina.

Bewaar voor rare bug-bugs, het netto-effect is altijd hetzelfde. Uw scripts worden uitgevoerd in een geheel nieuwe VM met exact hetzelfde geheugenverbruik.


3
2018-05-02 13:46



Mijn machine / browser getest, http://jsperf.com/location-href-vs-location-assign/2, voor Chrome 40.0.2214.93 32-bits op Windows Server 2008 R2 / 7 64-bits

location.assign was 15% langzamer dan location.href.


2
2018-02-03 02:18



Ik weet dat dit oud is, maar ik struikelde hierover toen ik op zoek was naar een manier om te controleren of mijn unittests doorverwezen werden naar de juiste url.

Ik zou meegaan window.location.assign() als je meer bezig bent met testen. Met behulp van een functie kunt u deze functie bespotten en de invoerparameters van de URL controleren.

Dus, met behulp van jest:

window.location.assign = jest.fn();

myUrlUpdateFunction();

expect(window.location.assign).toBeCalledWith('http://my.url');

// Clean up :)
window.location.assign.mockRestore();

0
2018-05-30 11:58