有没有办法在JavaScript中使用以下内容?
var foo = {
a: 5,
b: 6,
c: this.a + this.b // Doesn't work
};
Run Code Online (Sandbox Code Playgroud)
在当前形式中,此代码显然会抛出引用错误,因为this没有引用foo.但是,是有什么办法对早些时候宣布的其他属性在对象文本的属性值依赖?
我想在同一个对象文字中的另一个属性中引用对象文字中的嵌套属性.
考虑以下人为的例子:
var obj = {
product1: {
price: 80,
price_was: 100,
discount: function(){
return 100 - (100 * (price/price_was));
//I don't want to use:
//100 - (100 * (this.product1.price/this.product1.price_was))
//because the name of the parent ('product1' in this case) isn't known
//a-priori.
}
}
}
Run Code Online (Sandbox Code Playgroud)
以上显然是不正确的,但如何从'折扣'中获得'价格'和'price_was'?
我看了下面的问题,这个问题很接近,但在那个问题中,所需的属性是'this'的直接子项,在上面的例子中并非如此. 对象文字中的引用变量?
有什么办法吗?
说我有一个像这样的对象:
var time = {
'second': 1000,
'minute': 1000 * 60,
'hour' : 1000 * 60 * 60,
'day' : 1000 * 60 * 60 * 24,
'week' : 1000 * 60 * 60 * 24 * 7
};
Run Code Online (Sandbox Code Playgroud)
我如何缩短它以便引用其他键?
我的意思是这样的:
var time = {
'second': 1000,
'minute': this.second * 60,
'hour' : this.minute * 60,
'day' : this.hour * 24,
'week' : this.day * 7
}
Run Code Online (Sandbox Code Playgroud)
我无法引用每个使用time.foo因为变量尚未初始化.我可以简单地在一个新命令上添加每个命令,例如time['hour'] = time.minute * 60;,但我宁愿在一个命令中执行它.
我正在编写一个javascript对象,并防止重复同一对象的别名
例如,在此处重复相同值的键:
var colours = {
red: {
rgb: "255,0,0",
hex: "#FF0000"
},
brickred: {
rgb: "255,0,0",
hex: "#FF0000"
}
};
Run Code Online (Sandbox Code Playgroud)
我尝试引用同一个对象,而不是重复:
var colours = {
red: {
rgb: "255,0,0",
hex: "#FF0000"
},
brickred: this.red
};
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.我意识到(我认为)这是因为它指的是窗口对象而不是颜色.那么我试过:
var colours = {
red: {
rgb: "255,0,0",
hex: "#FF0000"
},
brickred: colours.red
};
Run Code Online (Sandbox Code Playgroud)
但这仍然不起作用,我不明白为什么.我怎么解决这个问题?
NB示例不是很好,但基本上我有一个对象文字,并希望避免重复,我有不同的键具有相同的值.我也想知道为什么它不能用于好奇心