Heim >Web-Frontend >js-Tutorial >JavaScript Advanced Series – Objektverwendung und -eigenschaften

JavaScript Advanced Series – Objektverwendung und -eigenschaften

黄舟
黄舟Original
2017-02-07 17:22:421151Durchsuche
  • 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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn