Heim >Web-Frontend >js-Tutorial >JavaScript Advanced Series – Objektverwendung und -eigenschaften
Objekt als Datentyp
Auf Eigenschaften zugreifen
Eigenschaften löschen
Syntax von Attributnamen
Objektverwendung und Attribute
Alle Variablen in JavaScript können als Objekte verwendet werden, mit zwei Ausnahmen null und undefiniert.
false.toString(); // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} Foo.bar = 1; Foo.bar; // 1
Ein häufiges Missverständnis ist, dass numerische Literale nicht als Objekte verwendet werden können. Dies ist auf einen Fehler im JavaScript-Parser zurückzuführen, der versucht, Punktoperatoren als Teil eines Gleitkomma-Literalwerts zu analysieren.
2.toString(); // 出错:SyntaxError
Es gibt viele Problemumgehungen, um Zahlenliterale wie Objekte aussehen zu lassen.
2..toString(); // 第二个点号可以正常解析 2 .toString(); // 注意点号前面的空格 (2).toString(); // 2先被计
Objekte als Datentypen
JavaScript-Objekte können als Hash-Tabellen verwendet werden, die hauptsächlich zum Speichern der Korrespondenz zwischen benannten Schlüsseln und Werten verwendet werden.
Ein einfaches Objekt kann mit der Objektliteralsyntax - {} - erstellt werden. Dieses neu erstellte Objekt erbt von Object.prototype und verfügt über keine benutzerdefinierten Eigenschaften.
var foo = {}; // 一个空对象 // 一个新对象,拥有一个值为12的自定义属性'test' var bar = {test: 12};
Zugriff auf Eigenschaften
Es gibt zwei Möglichkeiten, auf die Eigenschaften eines Objekts zuzugreifen: den Punktoperator oder 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 beiden Syntaxen sind gleichwertig, aber der eckige Klammeroperator ist in den folgenden beiden Situationen weiterhin gültig
Dynamische Einstellung von Attributen
Der Attributname ist kein gültiger Variablenname (Anmerkung des Übersetzers: Beispielsweise enthält der Attributname Leerzeichen oder der Attributname ist ein JS-Schlüsselwort)
Löschen Das Attribut
Die einzige Möglichkeit, eine Eigenschaft zu löschen, besteht darin, den Löschoperator zu verwenden. Wenn Sie eine Eigenschaft auf undefiniert oder null setzen, wird die Eigenschaft nicht tatsächlich gelöscht, sondern nur die Zuordnung zwischen der Eigenschaft und dem Wert entfernt.
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 obige Ausgabe hat bar undefiniert und foo null – nur baz wird tatsächlich gelöscht, sodass es aus der Ausgabe verschwindet.
Syntax von Attributnamen
var test = { 'case': 'I am a keyword so I must be notated as a string', delete: 'I am a keyword too so me' // 出错:SyntaxError };
Die Attributnamen von Objekten können mit Zeichenfolgen oder gewöhnlichen Zeichen deklariert werden. Aufgrund eines anderen falschen Designs des JavaScript-Parsers löst die zweite Deklarationsmethode oben jedoch einen SyntaxError vor ECMAScript 5 aus.
Der Grund für diesen Fehler ist, dass „delete“ ein Schlüsselwort in der JavaScript-Sprache ist. Um daher unter niedrigeren Versionen von JavaScript-Engines normal ausgeführt zu werden, muss eine String-Literal-Deklaration verwendet werden.
Das Obige ist die JavaScript-Serie für Fortgeschrittene – Objektverwendung und -attribute. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!