2015-08-28 52 views
1

我想在node.js中的數組嵌套對象內調用this,但它返回undefined調用此數組中的嵌套對象返回undefined

var foo = { 
    dog: 'max', 
    cat: { 
     names: [ 
      { grey: this.dog } 
     ] 
    } 

}; 

當我嘗試做foo.cat.names[0].grey返回undefined。我沒有任何功能,所以我不相信我必須緩存this,對不對?

+1

如果您在任何功能不是,'this'指的是全局對象不是你正在構建的對象。由於'global.dog'不存在,因此您將'grey'屬性設置爲'undefined'。 –

+0

這和node.js有什麼關係? –

回答

2

正如其他人所指出的,this在塊範圍內不存在,只有函數範圍。

你會好起來的定義你的目標分階段這樣的:

var foo = {}; 
foo.dog = 'max'; 
foo.cat = { 
    names: [ 
     { grey: foo.dog } 
    ] 
}