物件
有時物件被稱為關聯式陣列,因其key值可為文字,但本質並非關聯式陣列。
物件內的值所代表的意義,可由命名的key得知。一般javascript套件的設定也是用key-value的方式修改。
JavaScript是物件導向的程式語言,但它是使用原型基礎(prototype-based)的設計,而其他的物件導向,大部份都是使用類別基礎(class-based)的設計。
建立新物件
// 法一:從建立空物件開始
var obj={}
// 法二:從建立空物件開始
var person1 = new Object();
person1.name = 'Chris';
person1['age'] = 38;
person1.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
}
// 法三:直接代入初始物件
var person1 = new Object({
name : 'Chris',
age : 38,
greeting : function() {
alert('Hi! I\'m ' + this.name + '.');
}
});
// 法四:根據現有物件,建立新的物件。
var person2 = Object.create(person1);
物件成員
物件類型使用以屬性與方法為主要組成部份,這兩種合稱為物件成員(member):
-屬性: 物件可被描述的量化資料。例如水果這個物件,有顏色、產地、大小、重量、甜度等等屬性。 -方法: 物件的動作或行為。例如車子這個物件,它的行為有加速、煞車、轉彎、打方向燈等等的行為或可作的動作。
私有成員
JavaScript截至ES6標準為止,在類別中並沒有像其他程式語言中的私有的(private)、保護的(protected)、公開的(public)這種成員存取控制的修飾關鍵字詞
目前比較簡單常見的區分方式,就是在私有成員(或方法)的名稱前面,加上下底線符號(_)前綴字
在類別定義中可以使用get與set關鍵字,作為類別方法的修飾字,私有屬性或特殊值,才需要用這兩種方法來作取得或設定
JavaScript中只有靜態方法,沒有靜態屬性
靜態屬性目前來說有兩種解決方案,一種是使用ES7的Class Properties標準,可以使用static關鍵字來定義靜態屬性,另一種是定義到類別原本的定義外面
繼承
用extends關鍵字可以作類別的繼承,而在建構式中會多呼叫一個super()方法,用於執行上層父母類別的建構式之用
物件的拷貝
Object.assign() 合併二個物件,若其中一個為空,就是拷貝。
JSON.stringify(物件)=>字串 JSON.parse(字串)=>物件
undefined判斷方式
jQuery的物件合併是用$.extend
Error物件
Error物件只能使用new運算符來建立
Date物件
Date物件只能使用new運算符來建立
取得日期
設定日期
本地化與格式化
日期比較
Date物件可以直接比較大小
物件操作
物件轉化為陣列
Last updated
Was this helpful?