3 回答
TA贡献2012条经验 获得超12个赞
大多数人都错过了这一点。在我看来,填充或填充标准功能,Array.prototype.filter以便它在旧浏览器中工作是一个好主意。不要听仇恨。Mozilla甚至会向您展示如何在MDN上执行此操作。通常,不扩展Array.prototype或其他原生原型的建议可能归结为以下之一:
for..in可能无法正常工作其他人可能也想要使用相同的函数名扩展Array
它可能无法在每个浏览器中正常工作,即使使用垫片也是如此。
以下是我的回复:
您通常不需要
for..in在Array上使用。如果你这样做,你可以hasOwnProperty用来确保它是合法的。只有当你知道自己是唯一一个这样做的人或者当它是标准的东西时,才会扩展本地人
Array.prototype.filter。这很烦人,有点咬我。旧IE有时会出现添加此类功能的问题。您只需要根据具体情况查看它是否有效。对我来说,我遇到的问题是添加
Object.keys到IE7。它似乎在某些情况下停止工作。你的旅费可能会改变。
看看这些参考文献:
http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter
TA贡献2021条经验 获得超8个赞
我将从Nicholas Zakas的优秀文章中给出关键句子的要点。可维护的JavaScript:不要修改你不拥有的对象:
可靠性:“简单的解释是企业软件产品需要一致且可靠的执行环境才能维护。”
不兼容的实现:“修改您不拥有的对象的另一个危险是命名冲突和不兼容的实现的可能性。”
如果每个人都这样做怎么办 :“简单地说:如果团队中的每个人都修改了他们不拥有的对象,那么很快就会遇到命名冲突,不兼容的实现和维护噩梦。”
基本上,不要这样做。即使您的项目永远不会被其他任何人使用,并且您永远不会导入第三方代码,也不要这样做。你会建立一种可怕的习惯,当你开始尝试与他人玩耍时,这种习惯很难打破。
添加回答
举报
