将自定义函数添加到Array.prototype

我正在研究启用AJAX的asp.net应用程序。我刚刚向Array.prototype添加了一些方法,例如


Array.prototype.doSomething = function(){

   ...

}

该解决方案对我有用,可以以“漂亮”的方式重用代码。


但是,当我测试了它与整个页面一起使用时,我遇到了问题。我们有了一些自定义的Ajax扩展程序,它们开始表现出意想不到的效果:某些控件在其内容或值上显示为“未定义”。


这可能是什么原因?我是否缺少修改标准对象原型的东西?


注意:我很确定,当我为Array修改原型时,错误就开始了。它应该仅与IE兼容。


慕容森
浏览 640回答 3
3回答

当年话下

虽然可能会与其他代码发生冲突,但在原型上重写功能仍然存在风险,但是如果您想使用现代版本的JavaScript进行此操作,则可以使用Object.defineProperty方法,关闭可枚举的位,例如// functional sortObject.defineProperty(Array.prototype, 'sortf', {    value: function(compare) { return [].concat(this).sort(compare); }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript