2009-11-27 100 views
1

此代码在ie8中导致一个奇怪的错误。它来自MicrosoftAjaxAdoNet.js在link textIE8中奇怪的js数组分配错误

function Sys$Data$_AdoNetBatchWriter$startChangeSet() { 
     this._changesetBoundary = "changeset_" + this._createBoundary(); 
     this._changesetEntries = []; 
    } 

调用此函数之前,this._changesetEntries始终为空。我希望在调用这个函数后,他的._changesetEntries将变成一个空数组。它发生在铬,火狐,ie8预期。在ie8中并不总是如此,我发现有时这个函数创建一个方法“indexOf(v,n)”而不是空数组。

这种奇怪的行为引起其他错误在这里link text

编辑指出:现在我可以从我的代码隔离这个问题,当我用鱼眼的jQuery插件,也会出现此问题。在此插件,也有类似

[].indexOf || (Array.prototype.indexOf = function (v, n) { 
n = (n == null) ? 0 : n; 
var m = this.length; 
for (var i = n; i < m; i++) 
if (this[i] == v) return i; 
return -1; 

})

这是这个问题的原因。

回答

0

在你的问题'有时'是这里的关键:在什么情况下this._changesetEntries得到一个函数,而不是一个空的数组?一些页面加载?一些调用dataService?一旦你有了测试用例,回答可能会变得更加明显。

0

你可以发布你如何使用它?我们可以做的所有事情都是在推测:

这看起来像一个构造函数。你是否在使用new Sys$Data$_AdoNetBatchWriter$startChangeSet()实例化?