首页  >  文章  >  web前端  >  JavaScript 中的 Object.preventExtensions。

JavaScript 中的 Object.preventExtensions。

Susan Sarandon
Susan Sarandon原创
2024-10-01 06:30:29220浏览

在本文中,我们分析了 React 源代码中 Object.preventExtensions() 的用法。

Object.preventExtensions in JavaScript.

当标志 hasBadMapPolyfill 为 false 并且 typeof Object.preventExtensions 是一个函数时,将调用 Object.preventExtensions()。

但是 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn