In JavaScript kann die Definition einer Variablen mit dem reservierten Namen „Name“ zu unerwartetem Verhalten bei der Arbeit mit Objekten führen.
Im folgenden Snippet verhält sich Chrome anders als andere Browser:
var name = {}; name.FirstName = 'Tom'; alert(name.FirstName); // undefined in Chrome, 'Tom' in IE/Firefox
Diese Anomalie entsteht, weil „Name“ im Browserfensterobjekt einen besonderen Zweck hat. Während IE und Firefox „Name“ als reguläres Objekt behandeln, das Eigenschaften enthalten kann, interpretiert Chrome es als primitive Zeichenfolge und wandelt es entsprechend um.
Folglich wird der Variablen „Name“ ein Objekt zugewiesen (var name = {}) setzt die Eigenschaft window.name implizit auf den Zeichenfolgenwert „[object Object]“. Diese Konvertierung unterbricht das erwartete Objektverhalten und macht es unmöglich, Eigenschaften für „Name“ festzulegen oder darauf zuzugreifen, wie im Folgenden zu sehen ist:
alert(name); // "[object Object]"
Um dieses Problem zu vermeiden, wird empfohlen, die Verwendung von „Name“ zu vermeiden. als globaler Variablenname, insbesondere bei der Arbeit mit Objekten. Alternativ können Sie andere Variablennamen verwenden oder die Verwendung eines Namespace in Betracht ziehen, um Namenskollisionen zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum verhält sich die Variable „name' von JavaScript in verschiedenen Browsern unterschiedlich, wenn sie mit Objekten verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!