一个对象的属性设置为在同一个对象(使用Javascript/jQuery的)属性的负值
问题描述:
可以说我有一个Javascript对象:一个对象的属性设置为在同一个对象(使用Javascript/jQuery的)属性的负值
var myObj = {
property1 : 20,
property2 : -20
}
但是,相反的-20
为property2
,我需要采取的property1
值,并将其内property2
转换成其消极:
var myObj = {
property1 : 20,
property2 : this.property1 * -1
}
这是不行的,但我认为这说明了我想要完成的任务。
答
我可以建议你以下
var myObj = {
property1 : 20,
get_property2 : function() {
return this.property1 * -1;
},
set_property2 : function(value) {
this.property1 = value * -1;
}
}
编辑
看来,这是一个依赖属性,因此它是只读的。但是我编辑了代码,以便它也是可写的。
答
你不能那样做。您可以在以后分配给它,但:
var myObj = {
property1: 20
};
myObj.property2 = -myObj.property1;
答
您可以使用此:
var myObj = {
property1 : 20,
get property2() { return this.property1 * -1; }
};
但是,你只能读property2
属性。
定义设置property2
不会成为问题。 请参阅JavaScript Getters and Setters的链接。
我不确定你为什么要这样做。乘以-1是一件容易的事情,当你在做内联时,你可能甚至不需要进行类型检查以确保你想要乘的属性是相同的数据类型。好吧,我收回它。除非脚本是一个简单的脚本,否则你应该这样做,因为你如何确定'property1'的值没有被改为NaN? – Robusto 2012-04-01 14:20:59
我认为更一般的问题是,在对象字面值内,属性的值是否可以是涉及同一个早期对象的一个或多个其他属性的表达式。 – Pointy 2012-04-01 14:22:36
(答案是“不”)。 – Pointy 2012-04-01 14:23:30