ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript オブジェクト、配列、およびハッシュ テーブル

JavaScript オブジェクト、配列、およびハッシュ テーブル

高洛峰
高洛峰オリジナル
2016-11-28 15:13:331797ブラウズ

JavaScript では、オブジェクトは実際には次のユーザー オブジェクトのようなハッシュ テーブルです:

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]);
}

少し変更して、オブジェクトの代わりに Array オブジェクトを使用します:

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

より簡単な書き方:

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

上記のコードは次のようにすることができます。

Array オブジェクトを含むすべての JavaScript オブジェクトは、実際にはハッシュ テーブルであり、属性名はハッシュ テーブルのキーであり、属性の値はハッシュ テーブルの値です。

配列オブジェクトは、通常の意味では配列オブジェクトとは関係ありません。通常の配列は添字を介してのみ検索できますが、JavaScript の配列はハッシュ テーブルのようなキーを使用してコレクション内のオブジェクトを検索できます。

オブジェクトの「ハッシュ テーブル」に関数を値として直接割り当てることができます。

フロントエンドの時間に、Ruan Yifeng の「データ型と Json 形式」の記事を読みました。その記事では、yaml でデータを記述する場合、すべてのデータは 3 つのタイプに分類されると述べられていました。

最初のタイプはスカラー (スカラー)、 「Beijing」という単一の単語など、個別の文字列または数値。

2 番目のタイプは、「北京、東京」など、複数の関連するデータが特定の順序でまとめて配置されたもので、配列またはリストとも呼ばれます。

3 番目のタイプはマップ、キーと値のペアで、ハッシュまたは辞書とも呼ばれます (「首都: 北京」など)。

おそらくこれら 3 つのタイプについては誰もがよく知っていると思いますが、この記事で言及されている JSON の 4 つのルールは、JavaScript がデータを記述する方法を分析しているだけです:

並列データはカンマ (「,」) で区切られます。

マッピングはコロン (「:」) で表されます。

並列データのコレクション (配列) は角括弧 (「[]」) で表されます。

マップされたコレクション (オブジェクト) は中括弧 (「{}」) で表されます。

これら 4 つのルール (および機能の理解) があれば、一見「奇妙な」書き方の多くを理解できます。したがって、JavaScript オブジェクトは実際には配列またはマップです。

配列とマッピングの違いについては、次の例を参照してください:

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]);//映射无法以数组下标的方式访问

メンバーを検索する方法の観点から見ると、マッピングではメンバーの検索にキーが使用されますが、配列では添え字が使用され、マッピングでは添え字を使用してメンバーを検索することはできません。同様に、配列ではキーを使用できません (もちろん、キーはまったくありません)。

表現の観点からは、オブジェクト属性 (m.name など) と同様のメソッドを使用してマッピングにアクセスできます。キーを持つ [] メソッド (例: m["name"]、これは JavaScript の特殊なケースで、配列のように見えますが、実際にはマッピングです); ただし、配列は添字のみを使用できます。順序: 配列は順序正しく、マッピングは乱れています

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。