JavaScript 小學 — object 物件

Jordan Tseng
JordanTTCDesign
Published in
5 min readNov 29, 2020

object物件是一個複合資料型態 (composite data type),可以把它想成儲存各種資料的瓶子,瓶子適用一個{} 所包起來,裡面每組資料是由一個屬性名稱與一個或數個值所形成,並且除了最後一組之外,尾巴都要用 , 號隔開(這要記得唷🤩🤩)。

var objectName ={
prop1:'value',
prop2:2
}

物件屬性的值,可以是很多種類:數字、字串、函式、陣列、物件…等,我們來用實例看看:

var familyTseng = {
familyName: 'Tseng',
familyMoney: [30000, 36000],
familyMember : ['Jordan', 'Zoe','Yui'],
MemberNum: 3,
greet: function() {
console.log('good morning~')
},
house: {
address: '台北市大安區',
size: 25
}
};

上面的一個家庭物件中,有一個字串屬性是家族名稱,也有一個陣列屬性是成員,更有一個物件屬性是房屋,這樣把各種資料組合起來成為一個物件,可以很好的整理資料,不會散亂在一堆👍,也不用因為有不同家庭物件而創造一堆變數名稱😅😅,即便物件內部屬性名稱相同,指向不同物件就可以取得不同資料拉❤️

如何產生一個物件?

物件如何產生的,可以向上面一樣直接宣告完整的物件,一次寫完 ; 也可以先新增一個空物件之後,慢慢新增:

var family={};
family.familyName='Tseng';
family.familyMember = ['Jordan', 'Zoe','Yui'];

屬性的新增刪除修改

新增屬性,很簡單直接寫就好:

family.familyPet='King';

修改屬性,再重寫一次覆蓋掉:

family.familyPet='King';
console.log(family.familyPet);//King
family.familyPet='Peter';
console.log(family.familyPet);//Peter

刪除屬性,用 delete 刪除:

delete family.familyPet;
console.log(family.familyPet);//undefined

如何使用物件中的值呢?

👉用 . 即可呼叫💁

console.log(family.familyName)//Tseng

👉用 [] 也可以呼叫,但是要用 '屬性名稱' 包裹唷💁

console.log(family['familyName'])//Tseng

為啥要那麼麻煩不直接使用 . 就好?因為為了給一些有符號參雜的屬性名稱使用喔~像是下面🤪

var family={};
family['familyName-old']='Chen';
console.log(family['familyName-old'])//Chen

當然其實大部分都是使用 . ,比較好閱讀😇

物件與函式

如同上面所說,函式可以放在物件當作值,就會比較好整理:

var family={
familyName:'Tseng',
greet:function(){
console.log('hi');
}
}
family.greet();//hi

記得跟取得物件值的差異是後面要加上 () 才能使用函式😏

如果在函式中加入 this,是會指向他的父層物件唷,所以如在物件中的物件中的函式也有用this,是會指向第二層的物件(好饒舌!),來看看下面範例吧:

var family={
familyName:'Tseng',
greet:function(){
console.log(this.familyName);
},
house:{
address:'台北市大安區永康街',
show:function(){
console.log(this.address);
}
}
}
family.greet();
family.house.show();

物件與陣列

上面也有看到物件中的陣列,要取得陣列中的值也相當容易,就是總和物件值取得方式和陣列值取得方式:

var family={};
family.familyName='Tseng';
family.familyMember = ['Jordan', 'Zoe','Yui'];
//如果要取得第一為家庭成員
console.log(family.familyName[0])//Jordan

另外物件也能存在陣列中,像如果用上面的案例,一棟大樓可能有好幾個家庭,就要這樣寫:

var bulidingFamilys=[
{familyName:'Tseng'},{familyName:'Chen'},{familyName:'Wang'}
]

這樣要呼叫這棟大樓的第一個家庭時就會輸出:

console.log(bulidingFamilys[0]);

另外我覺得可以用另外一種方式,可能也不錯,就是先宣告好每個物件,再塞到陣列中,這樣這個物件就能有一個名字了!😌

var familyTseng={
familyName:'Tseng'
};
var familyChen={
familyName:'Tseng'
};
var familyWang={
familyName:'Wang'
};
var bulidingFamilys=[familyTseng,familyChen,familyWang];
console.log(bulidingFamilys[0]);

--

--