Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Objekte, Arrays und Hash-Tabellen

JavaScript-Objekte, Arrays und Hash-Tabellen

高洛峰
高洛峰Original
2016-11-28 15:13:331783Durchsuche

In JavaScript ist ein Objekt eigentlich eine Hash-Tabelle, wie zum Beispiel das folgende Benutzerobjekt:

function user(n, a)
{
    this.name = n;
    this.age = a;
    this.toString = function() {
        return "Name:" + this.name + ", Age:" + this.age;
    }
}
var u = new user("tom", 18);
for (var k in u) {
    alert('key: ' + k + ', value:' + u[k]);
}

Leichte Änderung, Array-Objekt anstelle von Objekt verwenden:

var user = new Array();
user["name"]="tom";
user["age"]=18;
user["toString"]=function(){
 return "Name:" + this.name + ", Age:" + this.age;
}
alert(user.toString());

Einfacher Schreibweise:

var u = {
 "name":"tom",
 "age":18
}
u.toString = function(){return 'Name:' + this.name + ', Age:' + this.age;};
alert(u.toString());

Wie aus den obigen Codes ersichtlich ist:

Alle JavaScript-Objekte, einschließlich Array-Objekte, sind tatsächlich eine Hash-Tabelle, und der Attributname ist Der Schlüssel von die Hash-Tabelle, und der Wert des Attributs ist der Wert der Hash-Tabelle.

Array-Objekte sind nicht im üblichen Sinne mit Array-Objekten verknüpft, aber Array in JavaScript kann Objekte in der Sammlung wie eine Hash-Tabelle über Schlüssel lokalisieren.

Eine Funktion kann direkt als Wert der „Hash-Tabelle“ des Objekts zugewiesen werden.

In der Front-End-Zeit habe ich Ruan Yifengs Artikel „Datentypen und Json-Format“ gelesen. Es wurde erwähnt, dass bei der Beschreibung von Daten in Yaml alle Daten in drei Typen unterteilt sind:

Die Der erste Typ ist ein Skalar, eine einzelne Zeichenfolge oder Zahl, beispielsweise das einzelne Wort „Beijing“.

Der zweite Typ ist die Reihenfolge mehrerer zusammengehöriger Daten, die auch als Array oder Liste bezeichnet wird, z. B. „Peking, Tokio“.

Der dritte Typ ist eine Karte, ein Schlüssel/Wert-Paar, auch Hash oder Wörterbuch genannt, wie zum Beispiel „Hauptstadt: Peking“.

Vielleicht sind wir alle mit diesen drei Typen vertraut, aber die vier im Artikel erwähnten Regeln für JSON analysieren lediglich die Art und Weise, wie Javascript Daten beschreibt:

Verwenden Sie Kommas zwischen parallelen Daten („,“) getrennt.

Die Zuordnung wird durch einen Doppelpunkt (:“) dargestellt.

Eine Sammlung (Array) paralleler Daten wird durch eckige Klammern („[]“) dargestellt.

Zugeordnete Sammlungen (Objekte) werden durch geschweifte Klammern („{}“) dargestellt.

Mit diesen vier Regeln (plus einem Verständnis der Funktion) können viele scheinbar „seltsame“ Schreibmethoden verstanden werden. Daher ist ein JavaScript-Objekt tatsächlich ein Array oder eine Karte.

Bezüglich des Unterschieds zwischen Arrays und Mappings können Sie sich das folgende Beispiel ansehen:

var m = {
 name:"keel",
 age:5
}
var a = [m,"sss",3];
//以下请求成功定位到name属性
alert(m["name"]);
alert(a[0]["name"]);//a[0]定位到m
alert(a[0].name);
//以下失败
alert(m[0]);//映射无法以数组下标的方式访问

Aus der Perspektive der Methode zum Auffinden von Mitgliedern verwendet das Mapping Schlüssel zum Auffinden von Mitgliedern, während Arrays verwendet werden Verwenden Sie die folgenden Indizes, Zuordnungen können nicht mithilfe von Indizes positioniert werden und Arrays können keine Schlüssel verwenden (natürlich gibt es überhaupt keinen Schlüssel).

Aus Sicht der Darstellungsmethoden kann auf Zuordnungen mit ähnlichen Methoden zugegriffen werden Objekteigenschaften (wie zum Beispiel: m .name), Sie können auch die Methode [] mit Schlüssel verwenden (wie zum Beispiel: m["name"], dies ist ein Sonderfall von JavaScript, es sieht aus wie ein Array, ist es aber tatsächlich eine Zuordnung); aber Arrays können nur Indizes verwenden;

Aus Sicht der Reihenfolge: Arrays sind in Ordnung, Zuordnungen sind ungeordnet;

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