1

答えは「いいえ」だと思いますが、それは、含まれているオブジェクトへのすべての参照を削除し、ガベージコレクションが最終的に含まれているオブジェクトのすべてのコンテンツを削除できるようにすることです。

ライブの例(コンソールでログ出力を表示する(ChromeでF12キーを押すなど))

コード:

(function () {

    var nameValue = "uninitialized";

    Object.defineProperty(this, "name", {
        enumerable: true,
        configurable: false,
        get: function () {
            return nameValue;
        },
        set: function () {
            console.log("This is a read-only property");
        }
    });
    console.log(nameValue);
    nameValue = "George";
    delete this.name;
    this.name = "";
    console.log(this.name);
})();
4

2 に答える 2

4

このプロパティ記述子の型が変更される可能性があり、対応するオブジェクトからプロパティが削除される可能性がある場合にのみ、true を設定できます。デフォルトは false です。

MDN の Object.defineProperty

ですから、それができないことに同意します。

あなたが言及したように、オブジェクト全体を削除できます。最初にすべての構成可能なプロパティをコピーすると、実際にはそれらが削除されます。これを行う場合、元のオブジェクトへの他の参照は影響を受けないことに注意してください。

于 2012-10-25T13:05:29.677 に答える