我有这么简单的代码
var q = {
p1: 'kv3',
p2: 'http://google.com/' + this.p1
};
console.log(q.p2);
我希望输出p2 + p1
,但出于某种原因{I} p1
时console.log
似乎未定义。 p1
之前未p2
初始化了吗?
这是什么样的正确代码?
答案 0 :(得分:3)
请记住,this
并未突然引用对象声明中的q
:
var p1 = 'kv3';
var q = {
p1: p1,
p2: 'http://google.com/' + p1
};
答案 1 :(得分:2)
对象q
被初始化为一体,所以其中的所有内容都无法访问,直到整个事情完成初始化。试试这个:
var q = {
p1: 'kv3'
};
q.p2 = 'http://google.com/' + q.p1
console.log(q.p2);
答案 2 :(得分:2)
this
是一个附加参数,在调用它们时会起作用(箭头除外)。
因此,this
没有引用该对象(它还没有被创建)。
但您可以实例化一个匿名函数:
var q = new function() {
this.p1 = 'kv3';
this.p2 = 'http://google.com/' + this.p1;
};