JavaScript中的delete的定義以及使用


定義:

  delete 操作符用於刪除對象的某個屬性;如果沒有指向這個屬性的引用,那它最終會被釋放。

語法:

  delete expression     expression 的計算結果應該是某個屬性的引用,例如:  

  delete object.property 
  delete object['property']
參數:
    
object
對象的名稱,或計算結果為對象的表達式。
   property
要刪除的屬性。
返回值:
對於所有情況都是true,除非屬性是一個自身的 不可配置的屬性,在這種情況下,非嚴格模式返回 false

異常:

  在嚴格模式下,如果是屬性是一個自己不可配置的屬性,會拋出TypeError

  

    • 如果你試圖刪除的屬性不存在,那么delete將不會起任何作用,但仍會返回true
    • 如果對象的原型鏈上有一個與待刪除屬性同名的屬性,那么刪除屬性之后,對象會使用原型鏈上的那個屬性(也就是說,delete操作只會在自身的屬性上起作用)
    • 任何使用 var 聲明的屬性不能從全局作用域或函數的作用域中刪除。任何用letconst聲明的屬性不能夠從它被聲明的作用域中刪除。
      • 這樣的話,delete操作不能刪除任何在全局作用域中的函數(無論這個函數是來自於函數聲明或函數表達式)
      • 除了在全局作用域中的函數不能被刪除,在對象(object)中的函數是能夠用delete操作刪除的。
  • 不可設置的(Non-configurable)屬性不能被移除。這意味着像MathArrayObject內置對象的屬性以及使用Object.defineProperty()方法設置為不可設置的屬性不能被刪除。

不可配置屬性:

  當一個屬性被設置為不可設置,delete操作將不會有任何效果,並且會返回false。在嚴格模式下會拋出語法錯誤(SyntaxError)。

  varlet以及const創建的不可設置的屬性不能被delete操作刪除。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM