2016-04-21 71 views
0

的訪問說我有代碼打字稿:訪問外部`this`在對象文本字段

class A { 
    a = 1; 

    o = { 
     get b() { 
      return this.a; //<-- 
     } 
    } 
} 

this指出,實際上是指o而我真的想訪問的A實例。

這是我想要的格式嗎? (如果沒有創建一個函數和別名)

+1

這不是有效的類語法開始用。在ES2015中,您只能定義類方法,而不是像這樣的屬性。所有的屬性都必須在構造函數中初始化(ES.Next提出了一個「靜態」可變槽,但這是一個不同的故事)。 – nils

+0

我不確定你的意思是「*沒有創建函數*」。你想要一個吸氣劑,對吧? – Bergi

+0

@nils是的,它實際上是TypeScript。我已經確定了標題。我想這可能是在TypeScript中定義屬性的方式的限制。 @bergi我的意思是沒有在函數範圍中包裝對象字面值以便別名this。 –

回答

0

我認爲這是將最終給你相同的API,但你必須打破了類來完成它:

class o { 
constructor(private owner: t) {} 
get b() { return this.owner.a; } 
} 

class t { 
a = 1 
o = new o(this) 
} 
+0

我喜歡OO的方法:) –

+0

它不流利,但它完成了工作;) – Catalyst