false.toString(); // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} Foo.bar = 1; Foo.bar; // 1
Eine oft missverstandene Sache ist, dass numerische Konstanten nicht als Objekte betrachtet werden können. Tatsächlich können numerische Konstanten immer noch als Objekte betrachtet werden. Dies liegt daran, dass der Javascript-Parser beim Parsen des Punktoperators einen Fehler macht und ihn als Gleitkommamerkmal behandelt.
2.toString(); // löst SyntaxError aus
Tatsächlich haben wir viele Möglichkeiten, eine numerische Konstante dazu zu bringen, sich wie ein Objekt zu verhalten.
2..toString(); // the second point is correctly recognized 2 .toString(); // note the space left to the dot (2).toString(); // 2 is evaluated first
Objekt als Datentyp
Objekte in Javascript können als Hash-Tabellen verwendet werden, die hauptsächlich die Entsprechung zwischen Schlüsseln und Werten enthalten.
Verwenden Sie das Symbol {}, um ein einfaches Objekt zu erstellen. Dieses neue Objekt erbt von Object.prototype und enthält keine eigenen Eigenschaften.
var foo = {}; // a new empty object // a new object with a 'test' property with value 12 var bar = {test: 12};
Zugriff auf die Eigenschaften eines Objekts
Wir können auf zwei Arten auf Javascript-Objekte zugreifen, nämlich den Punktoperator und den eckigen Klammeroperator [] .
var foo = {name: 'kitten'} foo.name; // kitten foo['name']; // kitten var get = 'name'; foo[get]; // kitten foo.1234; // SyntaxError foo['1234']; // works
Die Auswirkungen der beiden Operatoren sind nahezu gleich. Der einzige Unterschied besteht darin, dass der Klammeroperator das dynamische Setzen von Attributen ermöglicht und der Attributname Syntaxfehler aufweisen kann. (Die dritte Situation im obigen Beispiel wurde erklärt)
Attribute eines Objekts löschen
Die einzige Möglichkeit, ein Attribut zu löschen, besteht darin, „delete“ zu verwenden. Wenn Sie den Attributwert auf „undefiniert“ oder „null“ setzen, wird nur der mit dem Attribut verknüpfte Wert entfernt, nicht jedoch das Attribut selbst.
var obj = { bar: 1, foo: 2, baz: 3 }; obj.bar = undefined; obj.foo = null; delete obj.baz; for(var i in obj) { if (obj.hasOwnProperty(i)) { console.log(i, '' + obj[i]); } }
Die obigen Ausgaben bar undefiniert und foo null, nur baz wird tatsächlich gelöscht.
Hierbei ist zu beachten, dass mit delete nur Attribute und keine Variablen gelöscht werden können. Daher müssen wir uns beim Definieren von Variablen angewöhnen, Variablen zu schreiben. Variablen müssen jederzeit mit dem Schlüsselwort var deklariert werden. Denn wenn Sie var nicht schreiben, wird die Variable fälschlicherweise als neues Attribut erkannt, das für das globale Objekt erstellt wurde.
Dieses Beispiel gibt die Antwort ganz klar: a ist eine Variable und b ist nur eine Eigenschaft eines globalen Objekts.
Eigenschaften benannter Objekte
var test = { 'case': 'I am a keyword, so I must be notated as a string', delete: 'I am a keyword, so me too' // raises SyntaxError };
Objekteigenschaften können mit gewöhnlichen Zeichen oder Zeichenfolgen benannt werden. Aufgrund eines Fehlers im Design des Javascript-Parsers führt die zweite Darstellung im obigen Beispiel ebenfalls zu einem Fehler in ECMAScript 5.
Der Grund für den Fehler liegt darin, dass „delete“ ein Schlüsselwort ist und daher zur Anpassung an die alte Version des Javascript-Parsers mit einer String-Konstante benannt werden muss.