私は以下の機能が必要です。私はオブジェクトの既存のプロパティをフリーズしたいが、新しいプロパティを追加できるようにする。何らかの理由で、Object.freezeExisting()の機能がないようですが、プロトタイプの既存のプロパティをフリーズするオプションを使用して実装する価値があると思います。Object.seal、Object.freeze、Object.preventExtensionsの代替手段を実装する
どうすればいいのかわかりません。これはいくつかのコードですが、これはまったく正しいことではありません。パフォーマンスはそれほど気にせず、100%作業しなければなりません。
Object.freezeExistingProps = function(obj, modifyProto){
Object.keys(obj).forEach(function(key){
const val = obj[key];
Object.defineProperty(obj, key , { //we simply overwrite existing prop
value: val,
writable: false, // important, I think
enumerable: true,
configurable: false
});
});
return obj;
};
しかし、私は上記の健全性チェックが必要です。また、プロトタイプチェーンをどのようにダウンして、実際のObject.prototypeを使いこなす前に何とか止めることができるかについての情報が必要です。
'hasownproperty'は、私はあなたが探していると思うものです。 – Jai
[Javascript:Objectはメソッド 'freeze'をサポートしていません](http://stackoverflow.com/questions/13117771/javascript-object-doesnt-support-method-freeze) –
"*既存のプロパティをフリーズするプロトタイプ* "はあまり意味がありません。拡張機能を禁止しないと、プロトタイプは他のオブジェクト用にスワップアウトされる可能性があります。プロトタイプチェーンの一部だけをフリーズしようとすると、これはさらに疑わしいものになります。継承されたプロパティをオブジェクト自体にコピーし、それらをフリーズすることを検討することをお勧めします。 – Bergi