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

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

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

解决方法

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

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...