2017-10-13 48 views
0

我添加以下代码:在JavaScript中扩展本地Date对象是否会导致意想不到的效果?

Date.prototype.formatMMDDYYYY = function() { 
    return (this.getMonth() + 1) + 
    "/" + this.getDate() + 
    "/" + this.getFullYear(); 
} 

ReSharper的代码检查工具告诉我,Extending prototype of native object 'Date' may cause unexpected effects

什么是可能发生的一些意想不到的影响?

P.S.这个question讨论了为什么一般扩展对象是个坏主意,但所有的答案都非常模糊。我正在寻找我以我所做的方式扩展Date对象的特定副作用。

+1

@Ivar我澄清了这个问题。基本上我正在寻找你所链接的问题没有提供的细节。 – AngryHacker

回答

2

该功能应该正常工作。如果您正在操作属性或覆盖已存在的函数,则可能会出现问题。

例如,而不是this.getmonth() + 1你做了this.month++或任何内部被称为你刚刚改变日期和每次调用函数你正在改变日期。显然,覆盖一个函数会改变每个可能包含你的地方的函数。如果对于某些人来说,如果你在一个网页上,并且你加载了5个脚本文件,他们将全部使用重写的函数。这可能会有意想不到的结果。特别是如果脚本不相关。

所有这一切都说,它可能更好地构建作为包装 FormatDate (date) { return (date.getDate, ...)} 因为这将防止未来的命名冲突等。想象一下,试图从现在开始解决这个问题。你也可以创建一个日期子类来完成这些事情,如果你愿意的话可以使用它。

相关问题