javascript中物件佔有重要地位
學習到這通常也代表著要進入另一個學習階段
在javascript中,物件是賦予值的名稱之組合
// 物件是一群key:value組合而成的let obj = { key1: "value1", key2: "value2", // 對應的值當然也可以是另一個名稱與值(另一個物件) key3: { key3_1: "value3_1", key3_2: "value3_2" }, // 也可以對應函數,當函數在物件裡時,我們稱之為方法 key4 : function(params) { console.log(params) }}// 要取到物件的值,可以用中括號或是.(dot)console.log(obj.key1) // value1console.log(obj["key2"]) // value2// 物件中的物件console.log(obj.key3.key3_1) // value3_1// 物件方法obj.key4("hello") // hello// javascript可以合法新增物件屬性obj.key5 = "value5"console.log(obj.key5) // value5
json格式是網路傳輸的格式
物件與json格式很像
但他們不等於
json只是個資料”字串”
嚴格來說,json是物件的子集
比如說:json的key要包在引號福面
{ "serverURL": "127.0.0.1", "APIURL": { "scan": { "URL": "/scan" } }}
javascript有內建的方法可以快速的轉換物件及json
但不是物件一定可以轉成json
json則是一定可以轉成物件
如以下範例,obj中的key4是個funtion,就不能轉成json
console.log(JSON.stringify(obj))// {"key1":"value1","key2":"value2","key3":{"key3_1":"value3_1","key3_2":"value3_2"},"key5":"value5"}let jsonObj = JSON.parse(`{"key1":"value1","key2":"value2","key3":{"key3_1":"value3_1","key3_2":"value3_2"},"key5":"value5"}`)console.log(jsonObj)// { key1: 'value1',// key2: 'value2',// key3: { key3_1: 'value3_1', key3_2: 'value3_2' },// key5: 'value5' }
在javascript裡
函數就是物件
是一種特別的物件
函數有所有物件的特色
加上其它的特殊屬性
其中有2個重要的
一個是名稱(name): javacript的函數不一定會要有名稱(匿名函數就沒有名稱)
另一個是程式(code):就是函數的程式碼所在,呼叫的方式是(),所以在使用函數時,都會這樣使用functionName()。這就是在呼叫程式屬性!
記住函數就是物件~
可以跟物件一樣,被複製、移動、被傳入東西
function obj2(params) { console.log("this is obj2!")}console.log(obj2) // [Function: obj2]// 這樣是合法的obj2.newKey = "obj2Value"console.log(obj2) // { [Function: obj2] newKey: 'obj2Value' }// 函數多了一個屬性,就像物件一樣
想像函數只是程式碼的容器
它仍然是個物件
這個概念對之後理解this有幫助喔
佶曰:javascript的物件,裝的比真實世界還要多
沒有留言:
張貼留言