前言
物件單元的課後練習
第一題
如何從陣列物件中取得小明?
var a = [
{
family:
{
name:"小王"
}
},
{
family:
{
name:"小明"
}
},
]
請問結果是如何?
- a .family.name
- a[2].family.name
- a[0].family.name
- a[1].family.name
點我看答案
答案: 4
千萬要記得陣列的起始計算是從 0 開始
第二題
請問 a 會呈現甚麼答案?
var a = { };
var b = a;
var c = b = { number: 1 };
c.name = '小明';
console.log(a);
請問結果是如何?
- { number: 1 }
- { }
- {name: “小明”}
- undefined
點我看答案
答案: 2
原因是出在 b = { number: 1 } 的時候,被重新賦予物件,所以就離開了物件參考特性。
第三題
請問這個 JOSN 結構是否正確?
{
"name":"小明",
"age": 28,
"address":"Taiwan...",
}
請問結果是如何?
- 錯誤
- 正確
- 看不出來
- 介於正確與錯誤之間
點我看答案
答案: 1
JSON 的格式是非常嚴格的,多一個逗號少一個逗號,都會導致出現錯誤,所以 address 最後多了一個逗號
第四題
請問有哪些型別是傳參考特性?
- Array 、Function
- String、Number
- Boolean
- undefined
點我看答案
答案: 1
第五題
請問 console.log(greet.a) 會出現什麼?
function greet(){
a = 1;
}
greet.a = 2;
console.log(greet.a);
- undefined
- a is not defined
- 2
- 1
點我看答案
答案: 3
在 JavaScript 中 function 是一個很特別的存在,它是可以當成物件來使用,透過 「.」 即可做到新增屬性與值,所以function 在 JavaScript 是一個特殊的物件
第六題
請問這是淺層複製還是深層複製? 另外 console.log 會出現甚麼?
var family = [{
name: '小明家',
members:{
father: '父親',
mon: '母親',
ming: '小明'
}
}];
var array = [];
family.forEach((item) => {
array.push(item);
})
array[0].members.ming = 'casper';
console.log(family[0].members.ming);
console.log(array[0].members.ming);
- 深層複製 / casper
- 淺層複製 / casper
- 深層複製 / 小明
- 淺層複製 / 小明
點我看答案
答案: 2
因為陣列一取出來後就直接 push 到新陣列中,所以其實是屬於淺層複製
第七題
請問以下 console.log ( ) 會出現什麼?
var array = ['1', '2', '3', '4', '5'];
var array2 = array;
array2[4] = '6';
console.log ( 'array: ' + array[4]);
console.log ( 'array2 ' + array2[4]);
- array: 6 / array2: 6
- array: 5 / array2: 6
- array: 5 / array2: 5
- array: 6 / array2: 5
點我看答案
答案: 1
在前面有講過,傳參考特性中陣列也是一種