首頁 >web前端 >js教程 >JavaScript中物件property的刪除方法介紹_javascript技巧

JavaScript中物件property的刪除方法介紹_javascript技巧

WBOY
WBOY原創
2016-05-16 16:23:121275瀏覽

JavaScript中,可以使用delete運算子來刪除物件中的property:


複製程式碼 程式碼如下:

var t = {a:42, b:26};
console.log(t);//Object {a=42, b=26}
delete t.a;
console.log(t);//Object {b=26}


這種property刪除操作的限制在於:delete操作符只能刪除物件本身所有的property,無法刪除其從prototype物件繼承而來的property。如果想刪除prototype物件中的property,必須明確取得prototype物件後,在prototype物件中進行操作:


複製程式碼 程式碼如下:

var o = {x:1, y:2};
var a = Object.create(o);
a.z = 3;
console.log(a);//Object {z=3, x=1, y=2}
delete a.x;//Can NOT delete inherited property
console.log(a);//Object {z=3, x=1, y=2}
delete a.z;//Can delete own property
console.log(a);//Object {x=1, y=2}
delete a.__proto__.x;
console.log(a);//Object {y=2}


如果刪除了prototype物件中的property,那麼所有從該prototype物件繼承的物件都會收到影響。

 

對於delete操作的回傳值,JavaScript中遵循以下規則:

 

1.如果delete操作成功,回傳true。
2.如果delete操作無任何效果(例如要刪除的property並不存在),也回傳true。
3.如果要delete的property,其configurable屬性為false,那麼在嚴格模式下會報TypeError錯誤,而在非嚴格模式下則回傳false。
如果delete運算子所作用的是全域物件的property,那麼在非嚴格模式下,程式碼中的全域物件可以省略:

複製程式碼 程式碼如下:

this.c = 42;
delete c;//equal to delete this.c;

要注意的是,在嚴格模式下,上述寫法會拋SyntaxError錯誤。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn