我有这个问题: 我已经制作了一个“通用”对象来威胁 json 模型。 我需要通过他的“字符串名称”引用这个模型的属性。 问题是该属性是值类型而不是对象类型,因此我丢失了引用并且不会传播更改。
例子:
function Manager(json){this.JsonModel = json;}
Manager.prototype.Increment = function(propertyName){
this.JsonModel[propertyName]++;
}
var manager = new Manager({"a" : 5});
alert(manager.Increment("a"));
好吧,它工作得很好,但是这种情况呢:?
var manager = new Manager({"a" : {"a1" : 5 }});
alert(manager.Increment("a.a1"));
我怎样才能更好地做到这一点?
非常感谢大家。
最佳答案
这是“邪恶”的解决方案,但它有效:)
function A(json) {
this.Data = json;
}
A.prototype.inc = function(prop) {
//OMG, It's eval!!! NOOO
eval("this.Data." + prop + "++");
}
var p = new A({a : { c : 5 }, b: 2});
p.inc("b");
alert(p.Data.b);
p.inc("a.c");
alert(p.Data.a.c);
关于javascript: 'property reference' 如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757965/