-
Notifications
You must be signed in to change notification settings - Fork 4
使用 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裡面有些什麼元素呢!?