Object.defineProperty
2235 ワード
Object.defineProperty
を覚えてください.getとsetの2つの属性だけではないですよ.属性:
var b = Object.creat(null);
Object.defineProperty(b, "a", {
configurable: true,
writable: false,
value: "fuck"
});
適用:
まず、
object.preventExtensions(...)
を紹介します.個人的にはこの方法は単独で使うものはないと思います.この方法を使用すると、オブジェクトは確かに拡張できませんが、既存の属性TMDは削除されます.Object.seal()
は、実際には既存のオブジェクトにobject.preventExtensions(...)
を呼び出し、既存の属性をすべてconfigrable:falseとしてマークするシールのオブジェクトを作成します.従って、密封後は、新たな属性を追加することができないだけでなく、既存の属性を再構成または削除することもできない(属性の値を変更できるが)Object.freeze()
は、実際にはある既存のオブジェクトにObject.seal()
を呼び出し、既存の属性をすべてwritable:falseとしてマークして、その値を変更することができません.オブジェクトを深く凍結することができます.具体的な方法は、まずこのオブジェクトにObject.freeze()
を呼び出し、その後、参照されたすべてのオブジェクトを巡回し、これらのオブジェクトにObject.freeze()
を呼び出すことです.var a = {}
で定義しているオブジェクトを使っていますが、configrable、enumerable、writableのデフォルト値はすべてtrueです.valueはあなたの設定した値です.設定しないとundefinedです.参考: