Dies ist das erwartete Verhalten. Ähnliche Wertschreibvorgänge funktionieren jedoch nicht für document.cookie
%Vor% Wenn Sie document.cookie = "value=123"
ausführen, wird stattdessen an document.cookie
string angehängt, anstatt den Wert auf value=123
Wie wird die Zuordnung zu document.cookie
überschrieben?
document.cookie
ist ein wenig magisch, aber abhängig von den Einschränkungen Ihres Browsers verwenden Sie Object.defineProperty
um Eigenschaften zu definieren, die ein unterschiedliches get und set Verhalten haben.
Zum Beispiel:
%Vor%Um beispielsweise etwas Ähnliches wie das Cookie-Beispiel zu machen, könnten Sie eine Funktion wie folgt erstellen:
%Vor% Dies wird in einer data
-Eigenschaft gemischt, die den Wert setter auf ein privates Objekt erweitert. Der Getter gibt eine serialisierte Version davon zurück. Dann könnten Sie es verwenden mit:
Vom Browser bereitgestellte Hostobjekte verhalten sich so, dass sie nicht durch die Semantik der Sprache eingeschränkt sind. Das heißt, document
sieht wie aus wie ein JavaScript-Objekt, ist es aber nicht. Es ist Teil der Laufzeitumgebung.
Die JavaScript-Spezifikation ist in Bezug auf verschiedene interne "Methoden" -Beschreibungen geschrieben. Host-Objekte wie window
und document
haben spezielle Versionen dieser internen Methoden. Die Laufzeit folgt also der Spezifikation, wie der =
Zuweisungsprozess funktioniert, aber die interne Methode [[Put]]
ist einfach speziell.
Tags und Links javascript cookies