物件

物件是獨立資料類型 primitive 是一種資料類型,具有一個重大 差異:與原始物件不同,物件是「可變動」。物件中可包含資料 與 ID (例如變數) 建立關聯,但會保留其 object 資料 各種資料類型

除了基本值以外,所有 JavaScript 值均為 物件, 因此,原始常值會呈現類似物件的行為 原型 通常都表示 JavaScript 有效是由物件組成。

物件常值是一組大括號,圍繞零個或多個鍵/值 稱為「屬性」可包含任何 JavaScript 值。

{
    "myProperty" : true
}

屬性可以是任何符號string。指派 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();

在先前的範例中,系統已指派新建立的物件常值 變數。這就不是必要動作,因為就像任何其他資料類型一樣,您可以使用 在預期範圍內沒有 ID 的物件不過, 物件常值在任何情境中都必須使用括號,以免造成混淆 用於區塊陳述式,因為兩者共用大括號語法 ({})。 初始化變數永遠不需要這一點。

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

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

let valObj = { "value" : 2 };

valObj;
> Object { value: 2 }

與基元不同,建立創作成果沒有實質差異 使用 new Object() 建立物件並建立物件常值,因為 無論哪一種情況,都會成為物件,其屬性則沿用自 Object 原型。不過,這兩個容器之間 語法

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");