物件

  • 有時物件被稱為關聯式陣列,因其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?