这可能是一个新手问题。我已经使用了javascript多年,但只是开始对它“认真”。我有一个关于“这个”的问题
var defaults = {
baseId : 'item_',
baseName : this.baseId
}
console.log('defaults',defaults);
不确定为什么defaults.baseName是“undefined”如何引用花括号中的东西?是可能的,还是我真的要输入'item_'两次?
答案 0 :(得分:3)
简单的答案是你无法做你想做的事。在对象文字的解析/解释/评估(但是你想要考虑它)期间,它不存在,因此不能以任何方式引用它。
答案 1 :(得分:2)
你可以这样做:
var defaults = {};
defaults.baseId = defaults.baseName = 'item_';
答案 2 :(得分:2)
JavaScript对象文字是一种语法糖,因此它不起作用。
this; // at point A
var defaults = {
baseId : 'item_',
baseName : this.baseId
}
转换为
this; // point A
var defaults = new Object();
defaults.baseId = 'item_';
defaults.baseName = this.baseId; // "this" here is same as "this" at point A
您可以使用getter和setter。
{
baseId: 'item_',
get baseName() { return this.baseId; },
set baseName(x) { this.baseId = x }
}
答案 3 :(得分:1)
您可以使用function
代替class
:
function defaults() {
this.baseId = 'item_';
this.baseName = this.baseId;
}
现在this
将拥有适当的背景。
使用原始代码的另一个选择是使baseName
成为一个函数:
var defaults = {
baseId : 'item_',
baseName : function() { return this.baseId; }
};
感谢ŠimeVidas的纠正!