1. 程式人生 > 實用技巧 >Errors: Cant delete (Errors) – JavaScript 中文開發手冊

Errors: Cant delete (Errors) – JavaScript 中文開發手冊

[
  •   JavaScript 中文開發手冊

    Errors: Cant delete (Errors) - JavaScript 中文開發手冊

    資訊

    TypeError: property "x" is non-configurable and can't be deleted. (Firefox)
    TypeError: Cannot delete property 'x' of #<Object> (Chrome)

    錯誤型別

    TypeError in strict mode only.

    哪裡錯了?

    試圖刪除一個屬性,但該屬性是不可配置的。該configurable屬性控制是否可以從物件中刪除該屬性,以及是否writable可以更改其屬性(非)。

    這個錯誤只發生在嚴格的模式程式碼中。在非嚴格的程式碼中,操作返回false。

    示例

    不可配置的屬性不是很常見,但可以使用Object.defineProperty()或建立它們Object.freeze()。

    'use strict';
    var obj = Object.freeze({name: 'Elsa', score: 157});
    delete obj.score;  // TypeError
    
    'use strict';
    var obj = {};
    Object.defineProperty(obj, 'foo', {value: 2, configurable: false});
    delete obj.foo;  // TypeError
    
    'use strict';
    var frozenArray = Object.freeze([0, 1, 2]);
    frozenArray.pop();  // TypeError

    JavaScript中還內建了一些不可配置的屬性。也許你試圖刪除一個數學常量。

    'use strict';
    delete Math.PI;  // TypeError
  •   JavaScript 中文開發手冊
    ]
  •   本文標題:Errors: Cant delete (Errors) – JavaScript 中文開發手冊 - Break易站轉載請保留頁面地址:https://www.breakyizhan.com/javascript/32861.html