gpt4 book ai didi

javascript - 在 ECMAScript 5 之后重新审视扩展原生原型(prototype)

转载 作者:搜寻专家 更新时间:2023-11-01 04:38:20 24 4
gpt4 key购买 nike

最近,考虑到 ECMAScript 5 中定义属性的变化,我重新审视了我们是否可以安全地扩展原生 JavaScript 原型(prototype)的问题。事实上,一直以来我都扩展了像 Array 和 Function 这样的原型(prototype),但出于显而易见的原因,我避免对 Object 这样做。在使用 Jasmine 进行单元测试时,通过将 Object.prototype 规范添加到我自己的个人框架的规范中,使用不可枚举的函数 扩展 Object.prototype 似乎是安全的。然而,像“类型”属性这样的数据属性,以及执行任何异常处理的 getter/setter 会产生意想不到的后果。仍然存在与其他库发生冲突的可能性——尽管在我的工作中,这种情况几乎从未出现过。尽管如此,只要函数不可枚举,看起来扩展 Object.prototype 是安全的。

你怎么看?现在扩展 Object.prototype 安全吗?请讨论。

最佳答案

扩展 JavaScript 原生对象可能会变得更安全一些,因为许多冲突问题仍然存在。通常,除非您扩展对象以支持来自更新标准的标准化行为,否则引入包装器确实会更安全 - 当您是唯一的控制者时,以正确的方式做事要容易得多。

说到环境的原生对象(DOM 元素和节点,AJAX 东西),新的 JS 标准仍然没有提供,并且可以说,不能为您提供与这些对象的任何交互的任何保证除了在他们的接口(interface)标准中定义的。永远不要忘记,它们可以通过许多不同的脚本引擎访问,因此不需要针对一种特定语言(JS)的怪癖进行定制。因此,不扩展这些的建议仍然有效。

关于javascript - 在 ECMAScript 5 之后重新审视扩展原生原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com