ホームページ > 記事 > ウェブフロントエンド > JavaScript の Object.preventExtensions。
この記事では、React ソース コードでの Object.preventExtensions() の使用法を分析します。
Object.preventExtensions() は、フラグ hasBadMapPolyfill が false で、Object.preventExtensions の type が関数の場合に呼び出されます。
しかし、Object.preventExtensions() は何をするのでしょうか?
Object.preventExtensions() 静的メソッドは、新しいプロパティがオブジェクトに追加されることを防ぎます (つまり、オブジェクトに対する将来の拡張を防ぎます)。また、オブジェクトのプロトタイプが再割り当てされることも防ぎます。
// Example picked from MDN docs const object1 = {}; Object.preventExtensions(object1); try { Object.defineProperty(object1, 'property1', { value: 42, }); } catch (e) { console.log(e); // Expected output: // TypeError: Cannot define property property1, object is not extensible }
Object.preventExtension() に関する MDN ドキュメントを読む
拡張機能の追加が許可されないには、十分な理由があるはずです。これが使用されている関数である FiberNode 関数
をたどってみました。
これに対して Object.preventExtension を呼び出しますが、FiberNode を呼び出す関数はどれですか?
[createFiberImplClass](https://github.com/facebook/react/blob/5d19e1c8d1a6c0b5cd7532d43b707191eaf105b7/packages/react-reconciler/src/ReactFiber.js#L213-L226)
Object.preventExtension.
このコメントは、オブジェクトを拡張できない理由を説明します。
これらの関数は完全には理解していませんが、Object.preventExtensions が実際のオープンソース プロジェクトでどのように使用できるかはわかりました。
Think Throo では、オープンソース プロジェクトで使用される高度なコードベース アーキテクチャの概念を教えることを使命としています。
Next.js/React の高度なアーキテクチャ概念を実践してコーディング スキルを 10 倍にし、ベスト プラクティスを学び、実稼働レベルのプロジェクトを構築します。
私たちはオープンソースです — https://github.com/thinkthroo/thinkthroo (スターを付けてください!)
コードベース アーキテクチャに基づいた高度なコースでチームのスキルを向上させます。詳細については、hello@thinkthroo.com までお問い合わせください。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions
https://github.com/facebook/react/blob/5d19e1c8d1a6c0b5cd7532d43b707191eaf105b7/packages/react-reconciler/src/ReactFiber.js#L207
https://github.com/facebook/react/blob/5d19e1c8d1a6c0b5cd7532d43b707191eaf105b7/packages/react-reconciler/src/ReactFiber.js#L298
https://github.com/facebook/react/blob/5d19e1c8d1a6c0b5cd7532d43b707191eaf105b7/packages/react-reconciler/src/ReactFiber.js#L136
https://github.com/facebook/react/blob/5d19e1c8d1a6c0b5cd7532d43b707191eaf105b7/packages/react-reconciler/src/ReactFiber.js#L213-L226
以上がJavaScript の Object.preventExtensions。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。