微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

通常,java脚本允许覆盖(扩展新行为)除了那些未冻结或密封的对象之外的任何函数.在 JavaScript中,Math是一个内置对象.但是为什么JavaScript提供了覆盖内置对象中现有属性的权限?

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

解决方法

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

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

原文地址:https://www.jb51.cc/js/156997.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐