0%

JS核心-(32)-物件-課後練習

前言

物件單元的課後練習

第一題

如何從陣列物件中取得小明?

var a = [
    {
        family:
        {
             name:"小王"
        }
    },
    {  
        family:
        {
             name:"小明"
        }
    },
]

請問結果是如何?

  1. a .family.name
  2. a[2].family.name
  3. a[0].family.name
  4. a[1].family.name
點我看答案

答案: 4

千萬要記得陣列的起始計算是從 0 開始


第二題

請問 a 會呈現甚麼答案?

var a = { };
var b = a;
var c = b = { number: 1 };
c.name = '小明';
console.log(a);

請問結果是如何?

  1. { number: 1 }
  2. { }
  3. {name: “小明”}
  4. undefined
點我看答案

答案: 2

原因是出在 b = { number: 1 } 的時候,被重新賦予物件,所以就離開了物件參考特性。


第三題

請問這個 JOSN 結構是否正確?

{
  "name":"小明",
  "age": 28,
  "address":"Taiwan...",
}

請問結果是如何?

  1. 錯誤
  2. 正確
  3. 看不出來
  4. 介於正確與錯誤之間
點我看答案

答案: 1

JSON 的格式是非常嚴格的,多一個逗號少一個逗號,都會導致出現錯誤,所以 address 最後多了一個逗號


第四題

請問有哪些型別是傳參考特性?

  1. Array 、Function
  2. String、Number
  3. Boolean
  4. undefined
點我看答案

答案: 1  

第五題

請問 console.log(greet.a) 會出現什麼?

function greet(){
  a = 1;
}

greet.a = 2;
console.log(greet.a);
  1. undefined
  2. a is not defined
  3. 2
  4. 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);
  1. 深層複製 / casper
  2. 淺層複製 / casper
  3. 深層複製 / 小明
  4. 淺層複製 / 小明
點我看答案

答案: 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]);
  1. array: 6 / array2: 6
  2. array: 5 / array2: 6
  3. array: 5 / array2: 5
  4. array: 6 / array2: 5
點我看答案

答案: 1  
在前面有講過,傳參考特性中陣列也是一種