javascript:如何通过“属性引用”工作
我有这个问题: 我用 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"));
我怎样才能以更好的方式做到这一点?
对大家有很多帮助。
i have this question:
I have made a "generic" object to threat with json models.
I need to pass by reference a property of this model by his 'string name'.
The problem is that the property is a value type not an object type so i lose the reference and the changes will not be propagated.
Example:
function Manager(json){this.JsonModel = json;}
Manager.prototype.Increment = function(propertyName){
this.JsonModel[propertyName]++;
}
var manager = new Manager({"a" : 5});
alert(manager.Increment("a"));
ok it work well but what about this situation:?
var manager = new Manager({"a" : {"a1" : 5 }});
alert(manager.Increment("a.a1"));
how can i do that in better way?
Tnx a lot to all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是“邪恶”的解决方案,但它有效:)
This is the "Evil" solution, but it works :)
好吧,这是一个不太邪恶的解决方案,它也有效,至少对于您这里的场景来说......
OK, this is the not so evil solution and it works too, at least for the scenario that you have here...
这是我的解决方案:
用法:
alert(CommonUt.GetValueProperty({"Mammal" :{"Dog": {"Value" : 5}}}, "Mammal.Dog.Value"));
CommonUt.SetValueProperty({"Mammal" :{"Dog": {"Value" : 5}}}, "Mammal.Dog.Value", 6);
var CommonUt = {
};
This is my solution:
Usages:
alert(CommonUt.GetValueProperty({"Mammal" :{"Dog": {"Value" : 5}}}, "Mammal.Dog.Value"));
CommonUt.SetValueProperty({"Mammal" :{"Dog": {"Value" : 5}}}, "Mammal.Dog.Value", 6);
var CommonUt = {
};