Skip to content

使用 delete 刪除物件的 "屬性" 及 "方法"

TerryLee7788 edited this page Dec 12, 2013 · 8 revisions

使用 delete 刪除"物件"的 "屬性" 或 "方法"

使用 delete 去刪除物件內的 "屬性" 或 "方法",
它只會移除你所指定物件內的 "屬性" 或 "方法"(如果這個物件有的話), 
並不會刪除到物件"原型"內原有的 "屬性" 及 "方法".

附上JS code.

  Object.prototype.name = 'Terry_in_prototype';
  var obj = { 'name' : 'Terry' };

  console.log(obj.name);  //Terry
  delete obj.name;
  console.log(obj.name);  //Terry_in_prototype

  //在 delete 一次
  delete obj.name;
  console.log(obj.name);  //Terry_in_prototype

使用在"Array"上

你也可以直接對array 做delete 的動作, 或者用array 原型的方法

var arr = [0,1,2,3,4,5];

delete arr[2];
console.log(arr);  // [0,1,undefined,3,4,5];
arr.length;        // 6
// 你會發現, 使用delete arr[2], 元素雖然被移除了, 但是長度依然沒有減少, 
// 而原來arr[2]的值, 會變成undefined, 這時候, 就要用陣列原型的方法(splice)了

arr.splice(2,1);  // 回傳[undefined] ,他會回傳 陣列被選到的值.
 
// splice方法 的第一個參數是陣列元素位置, 第二個是你要從這個元素的位置當做起點, 刪除幾個元素
// arr.splice(2,1) 意思就是, 我要從arr[2]當做起點, 往後面刪除 -> "1個元素" (這邊就是陣列內的元素 "undefined" )

console.log(arr);  // [0,1,3,4,5]

// 還有另外一種用法就是在第二個參數之後加入的值, arr會視為: 你要加入的元素
// 很抽象吧!! 讓我們看看code 就知道他在做什麼了!!
console.log(arr);  // [0,1,3,4,5]
arr.splice(2,1, 2,3);
console.log(arr)  // 猜猜這時候array裡面有些什麼元素呢!?
Clone this wiki locally