オブジェクト

オブジェクトは、それぞれが プリミティブはデータ型で、1 つの重要な 違い: プリミティブとは異なり、オブジェクトは可変です。オブジェクトにデータを格納できる 変数などの識別子に関連付けられているが、object データは保持される 種類に関係ありません。

プリミティブを除き、すべての JavaScript 値はオブジェクトです。 プリミティブ リテラルは、 プロトタイプ型継承は JavaScript は実質的にオブジェクトで構成されているとよく言われます。

オブジェクト リテラルは、ゼロ個以上の Key-Value を中かっこで囲むペアです。 「プロパティ」と呼ばれる任意の JavaScript 値を含めることができます。

{
    "myProperty" : true
}

プロパティ キーには、任意の記号または 文字列。ID を割り当てるときと同じ プロパティキーとして使用される文字列は予測可能で、 説明:

let carAttributes = {
    "color" : "red"
};

carAttributes
> Object { color: "red" }

プロパティキーには単一(')または二重引用符(")の文字列リテラルが必要です。 テンプレート リテラル:

let carAttributes = {
    `keyString` : false
};
> Uncaught SyntaxError: expected property name, got template literal

プロパティ値には任意のデータ型を使用できます。オブジェクトのプロパティ自体は、 独自のプロパティを持つオブジェクトを格納:

let myObject = {
    'key' : {
        'subkey' : true,
        'othersubkey' : false
    }
};

myObject;
> Object { key: Object { subkey: true, othersubkey: false } }

プロパティの値が関数の場合、そのプロパティは「メソッド」と呼ばれます。

const myObject = {
    "myProperty" : true,
    myMethod() {
        console.log( "This is a method." );
    }
}

myObject.myProperty;
> true

myObject.myMethod();
> "This is a method."

new キーワードを使用してオブジェクトを作成することもできます。

let myObject = new Object();

上の例では、新しく作成されたオブジェクト リテラルに 使用できます。他のデータ型と同様に、使用可能な オブジェクトが想定されている場所に識別子のないオブジェクト。ただし、 オブジェクト リテラルでは、混乱を招く可能性があるコンテキストで括弧が必要 この 2 つは中かっこの構文({})を共有していることを前提としています。 変数の初期化では不要です。

{ "value" : 2 }
> Uncaught SyntaxError: unexpected token: ':'

({ "value" : 2 })
> Object { value: 2 }

let valObj = { "value" : 2 };

valObj;
> Object { value: 2 }

プリミティブとは異なり、作成の結果に意味のある違いは オブジェクト リテラルを作成し、new Object() を使用して作成する必要があります。これは、 いずれの場合も、 Object プロトタイプ。ただし、この 2 つのデータには実際的な違いが 1 つあります。 学びました。

new キーワードは、後でデータを格納する空のオブジェクトを定義する必要があります。

let myObject = new Object();

myObject.booleanValue = true;
myObject.stringValue = "My string.";

オブジェクト リテラルには、作成時にデータを入力できます。

let myObject = {
    'booleanValue' : true,
    'stringValue' : "My string."
};

実用性はほとんどありませんが、new Object() を使用してプリミティブに変換できます。 などのように、データ値をそれぞれの型のオブジェクトに new キーワードとコンストラクタ 使用します。たとえば、次の要素は機能的に同等です。 new Number( 10 ):

let myObject = new Object( 10 );

myObject;
> Number { 10 }

nullundefined の値は、機能的に同じ空のオブジェクトになる 引数を指定せずに new Object() を呼び出す場合と同じです。

オブジェクト リテラルを引数として new Object() に渡すと、そのオブジェクトが渡されます。 そのまま使用します。

let myObject = new Object( { myValue : 10 } );

myObject;
> Object { myValue: 10 }

プリミティブ値にコンストラクタを使用する場合と同様に、オブジェクトにはコンストラクタを使用します。 オブジェクト リテラル表記を使用するメリットはほとんどありません。作成時や 空のオブジェクトには後で値が代入されますが、デベロッパーは一般的に わかりやすくするためにリテラル表記を使用します。

理解度をチェックする

オブジェクトのプロパティの設定には、どのような表記法を使用できますか。

ドット表記
角かっこ表記
ピリオドの表記
線の表記

値を取得するための正しい構文は次のうちどれですか。 /myProp

myObj["myProp"];
myObj{"myProp"};
myObj("myProp");