Js中的delete關鍵字

delete關鍵字的作用:

  • 刪除對象的屬性 語法:delete 對象.屬性
  • 返回值類型爲布爾值(true / false),刪除成功返回true

delete關鍵字的使用注意:

  • 也可以用於刪除數組元素
  • 刪除未使用var/let/const關鍵字聲明的全局變量(直接定義在window上面的屬性)
  • var、let、const創建的屬性不能被delete操作刪除。
  • 刪除對象中不存在的屬性或數組不存在的元素,返回值是true
  • delete操作只會在自身的屬性上起作用,刪除對象的原型對象中的屬性(不能刪除),返回值是true
  • 刪除對象不可配置屬性,非嚴格模式返回 false,嚴格模式下直接報錯

使用:

a = 1
delete a    // true


var b = 1
delete b    // false,這裏使用let、const聲明同樣無法刪除


var obj = {
    name: 'zh',
    age: 23
}
delete obj.age    // true
delete obj.weight    // true,刪除不存在的屬性返回true


var arr = ['Mary', 'Bob', 'Lisa']
delete arr[1]    // true,這裏刪除了數組元素,但是數組長度不變,只是置空了index爲1的元素
delete arr[5]    // true


var obj = {}
Object.defineProperty(obj, 'a', {
  value: 1,
  configurable: false
})
delete obj.a // false
// 嚴格模式下直接報錯,Uncaught TypeError...


function Person() {
    this.age = 18;
}
Person.prototype.name = "Bob";
var p1 = new Person();
  
delete p1.name;    // true,但是此屬性是原型對象上的,並未刪掉,只能刪掉對象自身屬性
delete Person.prototype.name    // true,刪掉了原型對象上的name屬性

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章