所以我写了一个辅助函数
Object.prototype.Where = function ( boofunc ) {
// Returns an object whose own properties are
// those properties p of this object that satisify
// the condition boofunc(p)
var that = new Object();
for ( var prop in this )
{
if ( this.hasOwnProperty(prop) && boofunc(this[prop]) )
that[prop] = this[prop];
}
return that;
}
我已经确定破坏了我的代码,因为它给了我错误,例如
对象不支持属性或方法' exec'
在我已包含的其他JavaScript文件中。问题是我已经使用了这个功能100次......所以我想知道是否有任何方法可以改变身体来解决问题。如果我必须摆脱这个功能并将其更改为
function Where ( obj, boofunc )
{
var newobj = new Object();
for ( var prop in obj )
{
if ( obj.hasOwnProperty(prop) && boofunc(obj[prop]) )
newobj[prop] = obj[prop];
}
return newobj;
}
然后我必须通过我的代码中的100个不同的地方来改变它。
答案 0 :(得分:0)
我会在您的代码中更改它,使用正则表达式查找并替换您可以相当容易地完成大部分操作。这就是为什么你不应该修改本机对象,特别是其他所有继承功能的对象,这意味着String.where()Function.where()等..可能会破坏你的代码。
如果您必须修改本机原型,则应首先检查该方法或属性是否尚未添加。
if( typeof Object.prototype.where === 'undefined' ){
Object.prototype.where = function where(){ ... }
}