gpt4 book ai didi

javascript - 函数数组和奇怪的行为

转载 作者:行者123 更新时间:2023-11-29 17:18:33 24 4
gpt4 key购买 nike

我有以下代码:

var arr = [{Name: "foo", action: function(){ alert("foo")}},
{Name: "bar", action: function(){ alert("bar")}}
]

var arr2 = {};

for(var i =0; i< arr.length; i++)
{
var bla = arr[i];
arr2[bla.Name] = function(){ bla.action() };
}

arr2.foo();
arr2.bar();

提示两次“bar”。而我什么时候做

    arr2[bla.Name] = bla.action;

有效。

任何让它在第一种情况下工作的方法(我需要在我的函数中附加其他东西)

谢谢!

最佳答案

这是因为你的匿名函数中的 bla 是一个引用,它在循环中不断更新以指向下一个对象。当循环终止时,它们都将指向您在循环中引用的最后一个元素。

你可以通过做类似的事情来修复它

arr2[bla.Name] = (function(x) { return function(){ x.action(); }})(bla);

fiddle

关于javascript - 函数数组和奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com