我添加了这段代码:
Date.prototype.formatMMDDYYYY = function () {
return (this.getMonth() + 1) +
"/" + this.getDate() +
"/" + this.getFullYear();
}
Resharper 的代码检查工具告诉我,扩展 native 对象“Date”的原型(prototype)可能会导致意外的影响
。
可能会发生哪些意想不到的影响?
附注这个question有一个讨论为什么扩展对象通常是一个坏主意,但所有答案都非常模糊。我正在寻找以我所做的方式扩展 Date 对象的特定副作用。
最佳答案
该功能应该可以正常工作。如果您正在操作属性或覆盖已存在的函数,则可能会遇到问题。
例如,您不是使用 this.getmonth() + 1
而是使用了 this.month++
或任何内部调用的内容,您只是更改了日期和每次函数的时间称为您正在更改日期。显然,重写函数会在包含您的函数的每个地方更改该函数。对于某些人来说,如果您在网页上加载 5 个脚本文件,它们都会使用覆盖的函数。这可能会产生意想不到的结果。特别是如果脚本不相关。
尽管如此,将其构建为包装器可能会更好
FormatDate (日期) { return (date.getDate, ...)}
因为这可以防止 future 的命名冲突等。例如,想象一下 5 年后尝试解决这个问题。如果您愿意,您还可以创建一个执行这些操作的日期子类并使用它。
关于javascript - 在 Javascript 中扩展 native Date 对象是否会导致意外效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46734951/