JavaScript の Object.preventExtensions。

Susan Sarandon
リリース: 2024-10-01 06:30:29
オリジナル
347 人が閲覧しました

この記事では、React ソース コードでの Object.preventExtensions() の使用法を分析します。

Object.preventExtensions in JavaScript.

Object.preventExtensions() は、フラグ hasBadMapPolyfill が false で、Object.preventExtensions の type が関数の場合に呼び出されます。

しかし、Object.preventExtensions() は何をするのでしょうか?

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 ドキュメントを読む

React は Object.preventExtension をどのように使用しますか?

拡張機能の追加が許可されないには、十分な理由があるはずです。これが使用されている関数である FiberNode 関数

をたどってみました。 これに対して Object.preventExtension を呼び出しますが、FiberNode を呼び出す関数はどれですか?

[createFiberImplClass](https://github.com/facebook/react/blob/5d19e1c8d1a6c0b5cd7532d43b707191eaf105b7/packages/react-reconciler/src/ReactFiber.js#L213-L226)

Object.preventExtension.

を呼び出します。

Object.preventExtensions in JavaScript.

このコメントは、オブジェクトを拡張できない理由を説明します。

これらの関数は完全には理解していませんが、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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート