为什么JavaScript提供了覆盖内置对象中现有属性的访问权限

前端之家收集整理的这篇文章主要介绍了为什么JavaScript提供了覆盖内置对象中现有属性的访问权限前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通常,java脚本允许覆盖(扩展新行为)除了那些未冻结或密封的对象之外的任何函数.在 JavaScript中,Math是一个内置对象.但是为什么JavaScript提供了覆盖内置对象中现有属性的权限?

请找截图:最初我发现数学对象中有min函数.我用功能更新了“min”属性.此操作替换了现有代码.
为了更清楚,我已从“min”删除了该属性.这里删除应该删除扩展行为而不是核心行为.但它正在消除核心属性为什么?

解决方法

扩展或修改本机代码称为 monkey-patching,它是一个设计特性而不是设计缺陷.实际上,Javascript中的所有内容都是可变和可扩展的,因此您有能力根据自己的需要更改基础知识(例如,您可以重载min方法,以便它可以使用不同的变量类型,而不仅仅是整数和浮点数),但具有该功能有责任,所以除非你知道你在做什么,否则通常不建议改变这些标准功能;同样,你必须要知道,如果你的JS文件将在别人的环境中运行,你可能无法依赖你认为可以做的一切(但是,你通常应该能够期待通常的全局方法属性,这就是为什么你可以调用全局Object.prototype.keys或Array.prototype.slice而不是期望该方法在任何一个特定对象的原型上的原因.

简而言之,当您删除修改函数时,您将完全删除它,而不是将其恢复为某种原始状态.你基本上覆盖了原文,所以没有办法把它取回来(除了删除覆盖它的代码!).

猜你在找的JavaScript相关文章