Javascript对象调用其他对象迭代器

Javascript对象调用其他对象迭代器,javascript,Javascript,好吧,这很复杂,所以请容忍我,我会尽量保持简单: 我有一个“类”结构,它创建了一个“类似结构”的框架,应用于Javascript中的ArrayBuffers。问题是当我试图模仿类似于“c”的行为时,允许一个结构包含其他结构 问题是它会破坏调用方法的迭代器(显然是一个闭包问题),这一点我似乎无法理解 下面是一个被删除的代码示例(希望这是足够的代码来获得答案,如果没有,我将根据需要添加更多代码,只是尝试将无关代码排除在外): 当我迭代类方法applyBuf上的第一个结构时,它会对结构骨架中的每个项调

好吧,这很复杂,所以请容忍我,我会尽量保持简单:

我有一个“类”结构,它创建了一个“类似结构”的框架,应用于Javascript中的ArrayBuffers。问题是当我试图模仿类似于“c”的行为时,允许一个结构包含其他结构

问题是它会破坏调用方法的迭代器(显然是一个闭包问题),这一点我似乎无法理解

下面是一个被删除的代码示例(希望这是足够的代码来获得答案,如果没有,我将根据需要添加更多代码,只是尝试将无关代码排除在外):

当我迭代类方法applyBuf上的第一个结构时,它会对结构骨架中的每个项调用uu createFromBuf,如果该项是另一个结构,则u createFromBuf会对另一个“结构骨架”对象调用applyBuf,并将该结构的实例返回给调用的结构,该结构按预期工作


--下面是一个工作示例的链接:)

为语句清理

如果未正确声明,则
循环索引的
将成为全局成员

演示:

for (item in strctObj) // item becomes a global member

for (var item in strctObj) // item is scoped within the loop's owner function

控制台会说什么错误?StructObject中的循环中的obj会变成另一个对象的字段,例如,在调用uu createFromBuf之前的代码中,obj==“c”,但在调用obj==“foo”之后,obj==“foo”是另一个对象的字段。在基于[obj]的任何引用未定义之后,我可以用一个蹩脚的破解来修复它,但我更愿意找出如何执行正确类型的闭包(破解是在调用之前保存字段的值,并在返回之后替换它)。你能提供一个简单的功能演示来复制错误吗?也许是在玩小提琴?当然,没有问题,会带着它回来注意:清理你的
for
语句-如果没有分配,索引将成为
窗口或全局成员。e、 g.
for(strctObj中的项目)
==>
for(strctObj中的var项目)
。再次感谢,javascript不是我的强项,但我最近一直在用这种方式工作,我一整天都在用头撞击它,我认为这是一个结束问题。当然,感谢大家的认可。还要注意我前面的评论-注意
这个
关键字,它在其他语言(如C或Java)中的等价物的行为方式不同。您可以在中进一步阅读。谢谢,是的,我经常犯这样的错误,但通常不会太糟糕,console。log(这)是我最好的朋友(哈哈,直到我有了某种自引用对象lmao)这里有点吹毛求疵//酷!项在循环中的作用域这不是100%正确<代码>项
的作用域将限定为循环所在的函数,因为JS只有函数作用域(没有块作用域)。这是准确的,我已经相应地更新了答案,谢谢。
for (item in strctObj) // item becomes a global member

for (var item in strctObj) // item is scoped within the loop's owner function