javascript物件

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的物件,裝的比真實世界還要多

沒有留言:

張貼留言

About

努力在程式的大海
用力的揮動雙手
找出屬於自己的航線

Blog Archive

Traffic