JavaScript 核心觀念(34)-物件-課後練習
前言
接下來又來到了滿滿的物件章節測驗。
第一題
請問該如何從陣列物件中取得小明?
1 | var a = [{ |
a.family.name
a[2].family.name
a[0].family.name
a[1].family.name
點我看解答(請認真思考後再看解答)
答案是:「4」
千萬要記得陣列的起始計算是從 0
開始。
第二題
請問 a 會呈現什麼答案?
1 | var a = {}; |
{ number: 1 }
{}
{name: "小明"}
undefined
點我看解答(請認真思考後再看解答)
答案是:「2」
原因是出在 b = { number: 1 }
的時候,被重新賦予物件,所以就離開了物件參考特性。
第三題
請問以下該 JSON 格式是否正確?
1 | { |
- 錯誤
- 正確
- 看不出來
點我看解答(請認真思考後再看解答)
答案是:「1」
JSON 的格式是非常嚴格的,多一個逗號少一個逗號,都會導致出現錯誤,所以 address
最後多了一個逗號
第四題
請問有哪些型別是 傳參考 特性?
- Array 、Function
- String、Number
點我看解答(請認真思考後再看解答)
答案是:「1」
這題應該不用解釋了吧 XD
第五題
請問 console.log(greet.a);
會出現什麼?
1 | function greet() { |
- undefined
- a is not defined
- 2
- 1
點我看解答(請認真思考後再看解答)
答案是:「3」
在 JavaScript 中 function
是一個很特別的存在,它是可以當成物件來使用,透過 「.
」 即可做到新增屬性與值,所以 function
在 JavaScript 是一個特殊的物件唷~
第六題
請問這是淺層複製還是深層複製?另外 console.log
會出現什麼?
1 | var family = [{ |
- 深層複製 / casper
- 淺層複製 / casper
- 深層複製 / 小明
- 淺層複製 / 小明
點我看解答(請認真思考後再看解答)
答案是:「2」
因為陣列一取出來後就直接 push 到新陣列中,所以其實是屬於淺層複製唷。
第七題
請問以下 console.log()
將會出現什麼?
1 | var array = ['1', '2', '3', '4', '5']; |
- array: 6 / array2: 6
- array: 5 / array2: 6
- array: 5 / array2: 5
- array: 6 / array2: 5
點我看解答(請認真思考後再看解答)
答案是:「1」
在前面課程有講過,傳參考特性中陣列也是一種唷~
第八題
請問 console.log()
會得到什麼答案?
1 | var a = function () { |
- a.leng: English / b.leng: English
- a.leng: Chinese / b.leng: Chinese
- a.leng: Chinese / b.leng: English
- a.leng: English / b.leng: Chinese
點我看解答(請認真思考後再看解答)
答案是:「2」
在 JavaScript 中 function
也是物件的一種,只是它是擁有程式區塊的能力物件而已。
第九題
請問 console.log()
會出現什麼?
1 | var a = JSON.parse('{"name": "小明", "age": 28, "address": "Taiwan...","family": {"members": {"father": "父親","mon": "母親","ming": "小明"}}}'); |
- 父親 / 爸爸
- 爸爸 / 父親
- 爸爸 / 爸爸
- 父親 / 父親
點我看解答(請認真思考後再看解答)
答案是:「3」
透過 JSON.parse()
出來的資料是一個物件,所以物件會有傳參考特性
第十題
請問這三次的 console.log()
分別為多少?
1 | var a = { x: 1 } |
- 第一次: 2 / 第二次: 3 第三次: 3
- 第一次: 1 / 第二次: 2 第三次: 3
- 第一次: 1 / 第二次: 3 第三次: 2
- 第一次: 2 / 第二次: 3 第三次: 1
點我看解答(請認真思考後再看解答)
答案是:「1」
因為等號運算子先從右邊開始賦予,所以 a
原本的 { x:1 }
直接被重新賦值,所以從一開始就都是 { y:2 }
,而後面就是物件傳參考特性導致變成 {y : 3}
。