【发布时间】:2011-11-24 21:43:58
【问题描述】:
我能否安全地扩展 Javascript 内置类,例如 Array?
即以下内容在哪些浏览器/环境上不起作用:
Array.prototype.double = function() { return this.concat(this); }
Array.twice = function(a) { return a.double(); }
Array.twice([1, 2, 3]) # => [1, 2, 3, 1, 2, 3]
【问题讨论】:
-
这是一种常见的做法,我相信它适用于任何地方。不过,我不会将其作为答案发布,因为其他人可能能够确定它永远不会给您带来问题。
-
@Michael 只是补充说
Object.prototype是唯一不受限制的。任何使用for..in循环数组的人都应该被绊倒。我不会添加答案,因为我不可能在所有浏览器上进行测试。 -
Andrew Dupont gave a nice JSConf presentation 关于这个话题。
-
@Pierre 扩展 DOM 本身并不是一个“问题”。这更像是“仅限专家”的事情。 DOM-shim 做到了。
标签: javascript class