javascript: 'property reference' 如何工作

标签 javascript generics properties pass-by-reference

我有这个问题: 我已经制作了一个“通用”对象来威胁 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/

相关文章:

javascript - 单击按钮后关闭模式

Java 泛型类型在这种情况下不起作用

c# - "One Shot"Property Getters 是否被视为 .NET(或一般)中可接受的编码标准

java - 从 Java 控制台程序使用 .properties 文件

Java 类型转换问题

c# - 属性和方法之间的界线应该在哪里?

带空格的 Javascript 字符串参数不起作用

javascript - 带超时的 Node.js 异步迭代器

javascript - 如何告诉浏览器重新验证缓存

java - 复制不同类型的HashMap