对象变量初始化

时间:2016-02-25 23:01:18

标签: javascript

我有这么简单的代码

var q = {
  p1: 'kv3',
  p2: 'http://google.com/' + this.p1
};

console.log(q.p2);

我希望输出p2 + p1,但出于某种原因{I} p1console.log似乎未定义。 p1之前未p2初始化了吗?

这是什么样的正确代码?

3 个答案:

答案 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;
};