我有一些JSON数据,我正在尝试根据这些数据动态创建类和方法:
var classes = JSON.parse(data);
var classesObj = {};
for(var c in classes){
var methods = classes[c].methods;
var methodsObj = {};
for(var m in methods){
methodsObj[m] = function(args){
return methods[m].property;
}
}
classesObj[c] = methodsObj;
}
return classesObj;
但我的问题是,如果我打电话给
firstClass.firstMethod()
返回的属性实际上来自lastClass.lastMethod()
我很确定这是一个实例化问题,但我似乎无法弄清楚从哪里开始。
答案 0 :(得分:2)
问题是匿名变量(c和m)绑定到匿名函数之外的同一个变量。请参阅Javascript closure inside loops - simple practical example。