我有這樣一個簡單的代碼對象變量初始化
var q = {
p1: 'kv3',
p2: 'http://google.com/' + this.p1
};
console.log(q.p2);
,我希望輸出p2 + p1
,但由於某些原因,p1
似乎當我console.log
是未定義的。 p2
之前是不是p1
初始化?
這將是正確的代碼是什麼?
我有這樣一個簡單的代碼對象變量初始化
var q = {
p1: 'kv3',
p2: 'http://google.com/' + this.p1
};
console.log(q.p2);
,我希望輸出p2 + p1
,但由於某些原因,p1
似乎當我console.log
是未定義的。 p2
之前是不是p1
初始化?
這將是正確的代碼是什麼?
記住this
是不會突然指q
對象申報的內部:
var p1 = 'kv3';
var q = {
p1: p1,
p2: 'http://google.com/' + p1
};
對象q
全部初始化爲一體,因此它內部的所有內容都無法訪問,直到整個事情完成初始化。試試這個:
var q = {
p1: 'kv3'
};
q.p2 = 'http://google.com/' + q.p1
console.log(q.p2);
this
是一個額外的參數功能(除了箭頭的)接受被調用時。
因此,該this
不引用該對象(反正它還沒有被創建)。
但是你可以實例,而不是一個匿名函數:
var q = new function() {
this.p1 = 'kv3';
this.p2 = 'http://google.com/' + this.p1;
};
'this'只有當你調用一個函數來設置。 – Barmar