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