JS語言精粹學習筆記--物件字面量
物件
JS的簡單資料型別包括:數字、字串、布林值(true/false
)、null
值和undefined
,其他所有的值都是物件。數字、字串、布林值貌似物件,因為他們擁有方法,但他們是不可變的。JS中的物件是可變的鍵控集合(keyed collection
)。在JS中,陣列、函式和正規表示式都是物件,物件也是物件。
物件是屬性的容器,其中每個屬性都擁有名字和值。屬性的名字可以是包括空字串在內的任意字串,屬性值可以是除undefined以外的任意值。
JS裡的物件是無型別(class free
)的。它對新屬性的名字和值沒有限制,物件適用於彙集和管理資料,物件可以包含其他物件,所以它們很容易表示成樹狀或圖形結構。
JS包含一種原型鏈的特性,允許物件繼承另一個物件的屬性。正確地使用它能減少物件的初始化時消耗的時間和記憶體。(/lpc/-java類的繼承咯?)
物件字面量
物件字面量是一種可以方便地按指定的規格建立新物件的表述法。屬性名可以是識別符號或字串。這些名字被當作字面量名而不是變數名來對待,所以物件的屬性名在編譯時才能知道。屬性的值就是 表示式。
物件字面量提供了一種非常方便的建立新物件的表示法。一個物件字面量就是包圍在一對花括號中的零或多個”名/值“對。物件字面量可以出現在任何允許表示式出現的地方。
var empty_object = {};
var stooge = {
"first-name" : "Jerome",
"last-name":"Howard"
}
屬性名可以是包括空字串在內的所有字串。在物件字面量中,如果屬性名是一個合法的Javascript識別符號且不是保留字,則並不強制要求你用引號括住。所以上面的程式碼中”first-name
“必須用”“括起來,而first_name
就不用(因為中間是下劃線)。逗號用來分割多個“名/值”對。
屬性的值可以從包括另一個物件字面量在內的任意字表示式獲得。物件可以是巢狀的:
var flight= {
airline : "Oceanic",
number : 815,
departure : {
TATA : "SYD",
time : "2004-09-22 14:55"
city :"Sydeny"
},
arrival : {
TATA : "LAX",
time : ”2004-09-22 14:55“,
city : "Los Angeles"
}
}
檢索
要檢索物件裡面包含的值,可以採用在[]
字尾括住一個字串表示式的方式。如果字串表示式是一個字串字面量,而且是一個合法的Javascript識別符號且不是保留字,那麼也可以用 .
表示法。
stooge ["first-name"] //"Jerome"
flight.departure.TATA //"SYD"
如果檢索一個不存在的成員屬性的值,將返回undefined
。||
運算子可以用來填充預設值:
var middle = stooge["middle-name"] || ["none"]; //若不存在middle-name屬性,將返回none
嘗試從undefined
的成員屬性中取值將會導致TypeError
異常。這時可以通過&&
運算子來避免錯誤。.
flight.equipment //unfefined
flight.equipment //throw"TypeError"
flight.equipment && flight.equipment.model; //undefined
更新
物件裡的值可以通過賦值語句來更新。如果屬性名已經存在於物件裡,那麼這個屬性的值就會被替換。
stooge['first-name'] = 'Jerome';
如果對像之前沒有該屬性名,那麼該屬性名就被擴充到物件中。(js真靈活!!)
stooge[''middle-name'] = 'Lester' ;
stooge.nickname = 'Curly';
引用
物件通過引用來傳遞。它們永遠不會被複制:
var x = stooge;
x.nickname = 'Curly';
var nick = stooge.nickname; //x和stooge指向同一物件,nick為'Curly'。
var a = {},b={},c={}; //a,b和c每個都引用一個不同的空物件。
var a= b = c = {}; //都引用同一空物件。
相關文章
- js學習日記-物件字面量JS物件
- 《JavaScript語言精粹》學習筆記一JavaScript筆記
- 《JavaScript語言精粹》學習筆記二JavaScript筆記
- C語言例項解析精粹學習筆記——19C語言筆記
- C 語言學習筆記筆記
- C語言學習筆記C語言筆記
- js高階 物件導向 學習筆記JS物件筆記
- Solidity語言學習筆記————1、初識Solidity語言Solid筆記
- Solidity語言學習筆記————36、 庫Solid筆記
- Solidity語言學習筆記————37、Using forSolid筆記
- Solidity語言學習筆記————4、常量Solid筆記
- 熱更新語言--lua學習筆記筆記
- c語言學習筆記===函式C語言筆記函式
- Go語言學習筆記(七)之方法Go筆記
- Solidity語言學習筆記————33、事件(Events)Solid筆記事件
- Solidity語言學習筆記————12、陣列Solid筆記陣列
- Solidity語言學習筆記————34、繼承Solid筆記繼承
- 初識C語言(01)—學習筆記C語言筆記
- C語言學習筆記——位運算C語言筆記
- C語言學習筆記--C運算子C語言筆記
- go 學習筆記之初識 go 語言Go筆記
- c語言程式基礎學習筆記C語言筆記
- C語言學習筆記之變數C語言筆記變數
- JavaScript 物件字面量(object literal)JavaScript物件Object
- GO語言學習筆記之mac環境go語言配置Go筆記Mac
- js學習筆記JS筆記
- Promise 物件學習筆記Promise物件筆記
- 【Go】Go語言學習筆記-3-包Go筆記
- Solidity語言學習筆記————43、安全考量Solid筆記
- Solidity語言學習筆記————38、Solidity彙編Solid筆記
- Solidity語言學習筆記————42、提示和技巧Solid筆記
- Dart語言學習筆記(一) —— Dart簡介Dart筆記
- Solidity語言學習筆記————28、純函式Solid筆記函式
- Solidity語言學習筆記————26、回退函式Solid筆記函式
- Solidity語言學習筆記————16、對映MappingSolid筆記APP
- Solidity語言學習筆記————32、建立合約Solid筆記
- Go語言學習筆記 - PART9 - 介面Go筆記
- Flutter學習筆記(2)--Dart語言簡介Flutter筆記Dart