一句話概括:delete操作符會(huì)刪除對(duì)象本身的屬性
基本使用
var o = {a: "a"};
console.log(o.a); // "a"
delete o.a;
console.log(o.a) // undefined
從例子中可以看出软吐,刪掉的屬性馍资,再次訪問就會(huì)返回undefined
。delete操作符是有'副作用(Side Effect)'的关噪。delete操作符會(huì)返回true/false鸟蟹。 如果是一個(gè)合法操作,就返回true使兔,反之返回false建钥。
原型鏈
那么,刪掉的元素虐沥,再次訪問就一定會(huì)是undefined
嗎熊经?答案是否定的。
function F() {}
F.prototype = {a: "a"};
const f1 = new F();
console.log(f1.a) // "a"
delete f1.a;
console.log(f1.a) // "a"
const f2 = new F()
f2.a = "b";
console.log(f2.a) // "b"
delete f2.a;
console.log(f2.a) // "a"
第一個(gè)例子中欲险,刪除一個(gè)對(duì)象的原型上的屬性镐依,再次訪問后還是得到原來的值。
第二個(gè)例子中天试,對(duì)象把原型上的屬性進(jìn)行了重新賦值槐壳,然后刪除,再次訪問后還是得到原型上的值喜每。
因此delete操作符只針對(duì)對(duì)象本身务唐,不會(huì)影響到原型鏈上的屬性。
Reference: