Objectに追加された新機能についてMDCを閲覧していました。そのうちの1つ、、は、またはObject.preventExtensions
を使用して取得できるオブジェクトのプロトタイプへの変異を防ぐと言われています。Object.getPrototypeOf
__proto__
ただし、Chromeでは、オブジェクトのプロトタイプに変更を加えることができるようです。これは、関連するページのコードを実行するだけで確認できます。
// EXTENSION (only works in engines supporting __proto__
// (which is deprecated. Use Object.getPrototypeOf instead)):
// A non-extensible object's prototype is immutable.
var fixed = Object.preventExtensions({});
fixed.__proto__ = { oh: "hai" }; // throws a TypeError
これがわからないのでTypeError
、fixed.__proto__.oh === 'hai'
禁止されているはずなのに設定されています。のようにコーディングするときにも追加できObject.getPrototypeOf(fixed).oh = 'hai'
ます。
これは、Chromeがこの関数の解釈が異なることを意味しますか?オブジェクトのプロトタイプ(Chrome)の拡張を防ぐにはどうすればよいですか?