Javascript 初始化循环中类的新实例时,如何将赋值持久化到事件处理程序?

Javascript 初始化循环中类的新实例时,如何将赋值持久化到事件处理程序?,javascript,Javascript,这是我的后续问题 $.getJSON(myjson,函数(数据){ 我的init_节点函数 Juuvy.prototype.init_节点=函数(){ 返回此.key; } 此时,我只得到循环中的最后一个键,而不是每次唯一的传递。是否有方法可以持久化事件处理程序的赋值?mykey变量的作用域是函数。当触发onmouseover事件时(发生在循环之后)事件处理程序使用变量中的值,即退出循环时的值 使用匿名函数创建包含变量的闭包: $.getJSON(myjson, function(data) {

这是我的后续问题

$.getJSON(myjson,函数(数据){

我的init_节点函数

Juuvy.prototype.init_节点=函数(){ 返回此.key; }


此时,我只得到循环中的最后一个键,而不是每次唯一的传递。是否有方法可以持久化事件处理程序的赋值?

mykey变量的作用域是函数。当触发onmouseover事件时(发生在循环之后)事件处理程序使用变量中的值,即退出循环时的值

使用匿名函数创建包含变量的闭包:

$.getJSON(myjson, function(data) {
  var json = data;
  for (i in json) {
    juuvies[i] = new Juuvy(i,json[i], font, keyfontsize, valfontsize, orbcol, orbkeycol, orbvalcol, paper);
    juuvies[i].juuv_it();
    (function(){
      var mykey = juuvies[i].init_nodes();
      juuvies[i].orb.node.onmouseover = function() { console.log(mykey); };
    })();
  }
});

这样,
mykey
变量对于每个迭代都是一个新的局部变量。

您需要添加一个闭包

var json = data;
for (i in json) {
    juuvies[i] = new Juuvy(i,json[i], font, keyfontsize, valfontsize, orbcol, orbkeycol, orbvalcol, paper);
    juuvies[i].juuv_it();
    var mykey = juuvies[i].init_nodes();
    (function(i, mykey){
        juuvies[i].orb.node.onmouseover = function() {
            console.log(mykey);};
        };
    })(i, mykey);
});

这是一个非常常见的问题,请看这些,我会看看。我在这些方面还是新手,很难确定问题的框架。
var json = data;
for (i in json) {
    juuvies[i] = new Juuvy(i,json[i], font, keyfontsize, valfontsize, orbcol, orbkeycol, orbvalcol, paper);
    juuvies[i].juuv_it();
    var mykey = juuvies[i].init_nodes();
    (function(i, mykey){
        juuvies[i].orb.node.onmouseover = function() {
            console.log(mykey);};
        };
    })(i, mykey);
});