我的对象具有名为'type'的属性。此类型是对象中另一个属性的名称。我可以通过使用对象文字语法实现所需的输出而不将声明分为多个部分。这是我所拥有的,请感谢。
// desired output
// {
// name: 'Tom Ford',
// type: 'random-type',
// 'random-type': {
// title: 'Blah',
// amount: 2000
// }
// }
var thisRefTest = {
name: 'Tom Ford',
type: getRandomType(),
[this.type]: {
title: 'Blah',
amount: 2000
}
}
console.log('thisRefTest', thisRefTest)
// output:
// {
// "name": "Tom Ford",
// "type": "random-type",
// "undefined": {
// "title": "Blah",
// "amount": 2000
// }
// }
var funcRefTest = {
name: 'Tom Ford',
type: getRandomType(),
[function () {
return this.type;
}()]: {
title: 'Blah',
amount: 2000
}
}
console.log('funcRefTest', funcRefTest)
// output:
// {
// "name": "Tom Ford",
// "type": "random-type",
// "undefined": {
// "title": "Blah",
// "amount": 2000
// }
// }
function getRandomType(){
return 'random-type';
}
仅当您定义具有值的变量
时var type = getRandomType();
var thisRefTest = {
name: 'Tom Ford',
type: type,
[type]: {
title: 'Blah',
amount: 2000
}
};
事实是,在实例化时期没有对象。JavaScript解释器无法参考对象中未创建的属性,而相应的关闭括号}
则无法满足。