JS的物件是可透過名稱存取的陣列,也稱為關聯陣列,但是實際上物件並不只是具名的集合,物件本身就是一個個體,包含特性與動作等元素
所以物件可以理解成是屬性+方法所形成的
new運算子
物件是不可直接使用的,如果有兩個程式同時使用同一個物件這將會造成衝突,也稱作資料競合
所以我們使用物件必須使用new來複製一個物件,這個動作稱為實體化
//產生物件實體
var 變數名稱=new 物件名稱([arg...]);//此變數稱為實體變數
//使用實體變數呼叫屬性/方法
變數名稱.屬性
變數名稱.方法
//設定實體變數的屬性
變數名稱.屬性=設定值
使用JS內建物件不須執行實體化的動作
//呼叫內建物件length
var str="test";
alert(str.length);
集合物件
Array(俗稱的陣列)
//建立Array物件
var ary=[];//空陣列
var ary=new Array(10);//語意上容易造成模糊,不建議使用此方法建立空陣列
var ary=['A','B','C'];
var ary=new Array('A','B','C')
Map物件
Map物件是以鍵/值操作,也就是關聯的陣列物件,從ES6才開始提供
//建立Map物件
var m=new Map();
m.set('a','apple');
m.set('b','ball');
m.set('c','cat');
//呼叫Map物件
console.log(m.get('a'));//apple
console.log(m.get('b'));//ball
Set物件
Set物件用來管理唯一值的集合物件,若加入重複的值會被忽略,Set是ES6新加入的物件
Set物件與Array、Map物件差異在於不能透過索引或鍵的方式存取
只能使用for...of列舉元素或使用has檢查指定值是否存在
//建立Set物件
var s=new Set();
s.add(1);
s.add(2);
s.add(3);
s.add(3);//因為重複會被忽略
//取得Set物件的值
for(var val of s.values()){
console.log(val);
}
//檢查指定值是否存在
console.log(s.has(1));//true