我正在研究启用AJAX的asp.net应用程序。我刚刚向Array.prototype添加了一些方法,例如Array.prototype.doSomething = function(){ ...}该解决方案对我有用,可以以“漂亮”的方式重用代码。但是,当我测试了它与整个页面一起使用时,我遇到了问题。我们有了一些自定义的Ajax扩展程序,它们开始表现出意想不到的效果:某些控件在其内容或值上显示为“未定义”。这可能是什么原因?我是否缺少修改标准对象原型的东西?注意:我很确定,当我为Array修改原型时,错误就开始了。它应该仅与IE兼容。
3 回答
当年话下
TA贡献1890条经验 获得超9个赞
虽然可能会与其他代码发生冲突,但在原型上重写功能仍然存在风险,但是如果您想使用现代版本的JavaScript进行此操作,则可以使用Object.defineProperty方法,关闭可枚举的位,例如
// functional sort
Object.defineProperty(Array.prototype, 'sortf', {
value: function(compare) { return [].concat(this).sort(compare); }
});
添加回答
举报
0/150
提交
取消