Überschreibender Zuweisungsoperator in JS

8
%Vor%

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

festzulegen

Wie wird die Zuordnung zu document.cookie überschrieben?

    
zodvik 10.03.2014, 19:34
quelle

2 Antworten

14

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:

%Vor%     
James Holmes 10.03.2014, 19:46
quelle
1

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.

    
Pointy 10.03.2014 19:37
quelle

Tags und Links