JavaScript object


ノート:this blog copied from:http://www.k99k.com/ ,if resip it,pls note the resource.
javascriptでは、オブジェクトは実際には、次のuserオブジェクトのようなハッシュテーブルです。
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]);
}
 
少し変更して、オブジェクトの代わりにArayオブジェクトを使用します。
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());
 
以上のコードから見られます。
  • のすべてのjavascriptオブジェクトは、Arayオブジェクトを含む実際には、ハッシュ・テーブルであり、属性名はハッシュ・テーブルのkeyであり、属性の値はハッシュ・テーブルの値である。
  • Arayオブジェクトは、通常の意味の配列オブジェクトとは関連しないが、通常の配列は、下付きによってのみ位置を特定することができ、javascriptの中のArayは、ハッシュテーブルのように、keyによってセット内のオブジェクトを特定することができる。
  • は、一つのfunctionを直接値として対象に割り当てられる「ハッシュ・テーブル」とすることができる。
  • 前の時間に阮一峰の「データタイプとJson形式」文を見ました。yamlの記述データについて言及すると、すべてのデータを3つのタイプに分けます。
  • の第一のタイプはscalarで、単独のstringや数字、例えば「北京」という単独の言葉です。
  • の第二のタイプはSequenceで、いくつかの関連データは一定の順序で並べられています。array(配列)またはList(リスト)ともいいます。例えば、「北京、東京」です。
  • の第3のタイプはmap(マッピング)で、一つのキー/値ペア(Key/value)は、hash(ハッシュ)またはdictorary(辞書)とも呼ばれています。例えば、「首都:北京」です。
  • この3つのタイプはよく知っていますが、文の中でJsonの4つのルールはjavascriptがデータを記述する方式を分析しました。
  • 並列のデータ間はカンマ(",")で区切られます。
  • マッピングは、コロン(:)で表される。
  • 並列データのセット(配列)は、四角括弧(''')で表される。
  • にマッピングされたセット(オブジェクト)は、大かっこ({})で表される。
  • この4つのルール(functionに対する理解を加える)があり、非常に奇妙に見える書き方が多く理解できます。したがって、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]);//              
    
     
  • は、メンバーの位置付けの方法から、マッピングはkeyを使用してその中のメンバーを位置付けし、配列は下付きを使用し、マッピングは下付きの位置付けを使用することができません。同様の配列もkeyを使用することができません。
  • は、表現方法から、マッピングは、類似のオブジェクト属性を使用してアクセスすることができ(例えば、m.name)、keyを伴う[]方式を使用してもよい(例えば、m[name]])、これはjavascriptの特殊な例であり、配列のように見えるが、実際にはまだマッピングされている)。しかし、配列は下付きの方式だけを使用できます。
  • は、シーケンスから見て、配列は順序があり、マッピングは無秩序である。
  • データタイプとjsonフォーマット:(Note:thisブログcopied from:http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html ,if u resip it,pls note the resource.)
    1.
    先日、簡単なデータ交換フォーマットがあることを知りました。yamlといいます。
    私は一回その文書をひっくり返して、分かるところは多くないですが、一つの言葉が私の目を覚ましました。
    構造的に見て、すべてのデータは最終的に三つのタイプに分けることができるという。
    第一のタイプはscalarで、つまり単独のstring(文字列)または数字(numbers)です。例えば、北京という単独の言葉です。
    第二のタイプはSequenceで、つまりいくつかの関連データが一定の順序で並べられています。array(配列)またはList(リスト)とも言います。例えば、「北京、東京」です。
    第三のタイプはmapping(マッピング)であり、つまり名前とデータには名前があり、それに対応する値があります。これはhash(ハッシュ)またはdictionary(辞書)とも呼ばれます。例えば「首都:北京」です。
    データ構成の最小単位はなるほど簡単だったと、私ははっと悟った。プログラミング言語では、配列とオブジェクトがあれば、すべてのデータを保存することができます。
    2.
    すぐにJsonを思い出しました。
    21世紀の初め、Duglas Crockfordは簡単なデータ交換フォーマットを探しています。サーバー間でデータを交換することができます。これは実際には二段階が必要です。第一歩は各種データを一文字列に変換することです。つまりデータのシリアル化です。第二ステップはこの文字列を交換することです。
    当時通用していたデータ交換言語はXMLであったが、Duglas CrockfordはXMLの生成と解析が面倒だったので、彼は簡単なフォーマット、つまりJsonを提出した。
    Jsonの規格は非常に簡単で、一つのページ、数百字だけではっきり言えます。そしてDuglas Crockfordはこの規格は永遠にアップグレードする必要がないと言います。この規定は全部決まりました。
    1)並んでいるデータの間をコンマ(",")で区切ってください。
    2)マッピングはコロン(:)で表されます。
    3)並列データの集合(配列)は、大かっこ([])で表されます。
    4)マッピングされたセット(オブジェクト)は、大かっこ({})で表されます。
    上の四つの規則はJson形式のすべての内容です。
    例えば、次の言葉:
    北京市の面積は16800平方キロメートルで、常住人口は1600万人です。上海市の面積は6400平方キロメートルで、常住人口は1800万人です。
    Json形式にするとこうなります。
    [{「都市」:「北京」,「面積」16800,「人口」:1600]、{都市]:「上海」,「面積」:6400,「人口」:1800]]
    データの仕組みを知っていれば、上記の書き方はさらに簡略化されます。
    [[北京],16800,1600],[上海],6400,1800]
    このことから、Jsonは非常に学びやすく、使いやすいです。だから、短い数年の中で、それはxmlに取って代わって、インターネットの上で最も人気があるデータの交換のフォーマットになりました。
    私の予想では、Duglas Crockfordは必ず事前に知っています。データ構造は3つの形式に簡略化できます。そうでなければ、jsonの定義をこんなに精緻にすることはできません。
    3.
    私はjavascriptを勉強している時、一度は「行列」と「対象」の根本的な違いが分かりませんでした。両者はデータの集合を表しています。
    たとえば、配列a=[1,2,3,4]があり、オブジェクトa={0:1,2,2:3,3:4}があり、次にalert(a[1])を実行します。二つの場合の運行結果は同じです。つまり、データセットは配列でも対象でも表すことができますが、どれを使うべきですか?
    配列は秩序データの集合を表し、対象は無秩序データの集合を表すことを後から知った。データの順序が重要であれば、配列を使います。そうでなければ対象を使います。
    4.
    もちろん、配列とオブジェクトの別の違いは、配列中のデータには「名前」がなく、オブジェクト中のデータには「名前」があります。
    しかし問題は、多くのプログラミング言語の中に「関連配列」というものがあります。この配列のデータには名前があります。
    javascriptでは、このようにオブジェクトを定義することができます。
    var a={「都市」:「北京」、「面積」:16800、「人口」:1600}
    しかし、関連配列として定義することもできる。
    a[都市]=「北京」a[面積]=16800a[人口]=1600;
    これは最初に同じく私の組と対象に対する混淆を激化させて、後でやっと分かって、Javascript言語の中で、関連配列は対象で、対象は関連配列です。この点はphp言語とは全く違って、phpでは関連配列も配列です。
    たとえば、次のセクションjavascriptを実行します。
    var a=[1,2,3,4]
    a['foo'='Hello World'
    alert(a.length)
    最後の結果は4です。つまり、配列aの要素の個数は4つです。
    しかし、同じ内容のphpコードを実行すると違います。
    $a=array(1,2,3,4);
    $a[[foo]=[Hello world]
    echo count($a)
    最後の結果は5です。つまり、配列aの要素の個数は5つです。