接下來就剩下object了,但本篇只會介紹到array跟object,function因為篇幅的關係會獨立一章,雖然我把他們分開介紹,但大家不要忘記function也是objects喔
但在進入正提前,首先讓我們先了解什麼是 name/value pair 。
A name which maps to a unique value(這個名稱映射到的唯一值)
在一段執行的code中,名稱可能會被賦予不同的值,但他都只對應到唯一一個值
例如:
var Address = '100 Main St.'
var ->宣告
Address ->變數名
“100 Main St.” ->值(字串)
但該值可能會是多組 name/value 的集合,也就是 object
例如:
var Add = {
Address: {
Street: 'Main',
Number: 100
Apartment: {
Floor: 3,
Number: 301
}
}
}
在JavaScript中,object本質還是 name/value 的配對組合。
剛剛有提到,object 是 name value pairs的集合
name就是我們自己設定的名稱,那value是什麼?或是說value可以放什麼呢?
在object可以放入的值有以下3種:
我們稍微總結一下:
用圖表我們會更加清楚:
是不是清楚很多了。
另外有一點大家要清楚,在 object 中的每一個 Property 或是 Method 都會占據電腦當中一個記憶體的位置,在需要使用到的時候,把它們呼叫出來。
接下來真的要來介紹object跟array了:
剛剛我們有介紹過,物件(object)是 JavaScript 中的一種複合資料型別,用於儲存多個name/value 的配對組合。
建立新物件會有更好的方法但現階段我先用這兩個方式解說。
方法1,使用[]
:
[]
在 JavaScript 中被稱做 Computed Member Access,我們可以在運算子那個表格看到他,以下是範例:
var person = new Object();
person['firstName'] = 'Jeff';
person['lastName'] = 'Wang'
首先我們先建立一個物件並取名叫做 person ,接著開始給它『名稱 - 值』(name value pairs)配對
例如:firstName 是屬性的名稱,Jeff 是他的值。
當物件建立好了就是呼叫,當[]
裡面放的是字串時記的要加上引號’’,例如:
console.log(person[`firstName`]);
透過這個方法有一個很特別的地方就是可以放變數,一樣可以提取裡面的值,這是等等要介紹的第二個方法辦不到的。範例如下:
var firstNameProperty = 'firstName'
console.log(person[firstNameProperty]) //Jeff
補充:當今天我們是在person這個object裡呼叫變數時,變數裡面存的就是記憶體裡面儲存firstName的位子,我們可以把它想像firstNameProperty放了一個門牌,我們可以透過這個門牌找到firstName住的地方。
建立物件的方法2,使用.
:
.
在 JavaScript 中被稱做 Member Access,我們可以在運算子那個表格看到他
person.address = new Object();
person.address.street = "111 Main St.";
person.address.city = "New York";
person.address.state = "NY";
用最簡單的方式來理解,我們可以把.
翻譯做‘的’,就可以比較好理解,例如:person.address= new Object()可以解釋為在person的address創建一個新的物件
呼叫的方法一樣:
console.log(person.address.street);
console.log(person.address.city);
.
跟[]
是可以交替使用的。雖然使用這兩個方法都可以拿來建立物件和讀取物件,但還是建議盡量使用.
做為建立物件和呼叫物件的方法。
new Object 不是建立物件最好的方式,大部分的時候我們會使用object literal syntax的方法,也就是使用”{ }”來快速又簡便的建立物件。
var Jeff = {
firstName: "Jeff",
lastName: "Wang",
address: {
street: "111 Main St.",
city: "New York",
state: "NY",
},
};
另外也可以使用這個方式:
var Jeff = {
firstName: "Jeff",
lastName: "Wang",
};
Jeff.address = {
street: "111 Main St.",
city: "New York",
state: "NY",
};
基本上就是看自己的習慣以及閱讀性來去寫就可以了,個人是比較常用第一個方式。
物件建立好後我們可以搭配函式來執行看看:
function greet(person) {
console.log("Hi " + person.firstName);
}
greet(Jeff);
這樣我們就可以在console看到 Hi Jeff。
另外還有一種方式是我沒有遇過的:
function greet(person) {
console.log("Hi " + person.firstName);
}
greet({
firstName: "Mary",
lastName: "Doe",
});
在傳入參數時才創建新的object,但他其實就是跟我們直接在function的參數輸入是一樣的意思。我們把這種直接在函式的參數中建立物件的方法稱做”creating object on the fly”。
其實不管使用哪一種方法,再經過JavaScript轉譯後,本質上都是做同樣的事情。它都會將這個物件建立在記憶體中,並建立該物件的屬性(property)和方法(method)在記憶體中。
陣列(array)是一種有序的資料結構,用於儲存一組相關的值。
當我們用判斷類型:typeof時,會得到object的回傳值,因此Array屬於object
我們可以透過array literal (陣列實字)來宣告一個空陣列:
const arrayName = [item1, item2, ...];
陣列中的每一個值我們稱做一個元素,每一個元素儲存在陣列中固定的位置,我們稱做索引 (index),索引值從 0 開始,表示陣列中的第一個元素,第二個之後的元素索引值則依序加 1
const myFriends = ['派大星', '章魚哥', '小蝸', '蟹老闆', '珊迪']
console.log(myFriends[0]) // '派大星'
要知道一個陣列有多少資料,可以使用 length,例如:
const myFriends = ['派大星', '章魚哥', '小蝸', '蟹老闆', '珊迪']
console.log(myFriends.length) // 5
讓我們直接看範例:
const myFriends = ['派大星', '章魚哥', '小蝸', '蟹老闆', '珊迪']
const first = myFriends[0] // 派大星
const last = myFriends[myFriends.length - 1] // 珊迪
myFriends[0] = '海綿寶寶'
console.log(myFriends) // ["海綿寶寶", "章魚哥", "小蝸", "蟹老闆", "珊迪"]
JavaScript 提供了一些現成的方法讓我們可以操作陣列資料,例如以下方法可以從陣列的頭/尾部插入/移除資料。
花了幾天的時間介紹完了資料型別,function 原本也是打算放在這裡,但一方面這樣篇幅真的會太長,另一方面function還蠻重要的,所以我希望我可以把他單獨一篇。明天就是function!