我遇到了一个相当有趣的问题。 下面的代码生成了一个数组, 当登录时, 给出了值 < code> [ 未定义 x1] code > 。 根据< a href=" https:// stackoverflow.com/ a/ 10683811/ 339852" > 的回答 < /a>, 这意味着数组已经将指数- 在此情况下, 只有一个。 但是, 由于我仅仅使用 < code> array. push () code > 来避免这种问题, 我损失了 m 。 据我所知, 我最了解的只是指派一个比其它初始索引更大的索引, 可能会造成问题。 无论如何, 这里的代码是 :
function Thing(params) {
var that = this;
this.OtherObject = function OtherObject(param) {
this.param = param;
}
this.Foo = function Foo() {
this.bar = [];
this.add = function(item) {
if (this.bar.length != 0) {
for (var i = 0, len = this.bar.length; i < len; i++) {
if (this.bar[i].param <= item.param) {
this.bar.splice(i, 0, item);
}
}
} else {
this.bar[0] = item;
console.log(this.bar);
}
}
this.pop = function() {
return this.bar.pop();
}
this.length = function() {
return this.bar.length;
}
}
this.someFunc = function() {
var myThing = new that.Foo();
myThing.add(new that.OtherObject(3));
while (myThing.length() > 0) {
var someVar = myThing.pop();
}
}
}
var myThing = new Thing({
myParam: "someValue"
});
myThing.someFunc();
我创建了一个测试案例,看能否缩小问题范围,但我最后重新打上我95%的代码,直到我再次遇到这个问题,这似乎与我使用 my Thing.pop ()
有关。你可以找到一个小提琴 < a href=> "http://jsfiddle.net/cbYqG/3/" rel=“nofollown noreferrer'>这里的“/a>,这表明了这个问题。
那么... 任何关于是什么原因的原因的想法吗? 这实际上是否与我筑巢的方式有问题? (我这样做是因为我用的“https://stackoverflow.com/a/100511156/339852>对我之前的问题的回答 。) (我这样做时采用了在
如果您想知道我可以在这里做什么, 我将外部对象处理成一种命名空间, 我这样做是为了避免折叠全球命名空间( 如果我在这里将我的行为集中在一起, 这最终将是一个路由调查库 ) 。 < code> Foo code> 对象的意思是排序列表, 这样我就可以通过堆叠中的 < code>pop () code> 属性获得最接近的节点( 最小的 < code> param code > 的节点) 。