2016-10-28 52 views
0

有沒有辦法避免總是附加一個「this」來引用私有組件變量或函數?角度2組件變量作用域和引用

例如,下面的會造成「富」

export class SomeComponent { 
    private foo = 5; 

    someMethod(){ 
     console.log(foo); 
    } 
} 

要解決,我需要附加一個「本」給foo的變量,如在「找不到名稱」錯誤:

console.log(this.foo); 

我全部都是爲了強有力地識別變量,但是由於大多數Angular組件的尺寸較小,這似乎過於嚴格。

回答

2

JavaScriptTypeScript您需要參考該字段和類的功能的語言與this關鍵字類

Documentation of TypeScript

讓我們來看一個簡單的基於類的示例:

class Greeter { 
    greeting: string; 
    constructor(message: string) { 
     this.greeting = message; 
    } 
    greet() { 
     return "Hello, " + this.greeting; 
    } 
} 

let greeter = new Greeter("world"); 

如果您以前使用過C#或Java,那麼語法應該看起來很熟悉。我們宣佈一個新班級Greeter。這個類有三個成員:一個叫做問候的屬性,一個構造函數和一個方法問候。

您會注意到,在我們引用類的成員之一時,我們在該類的前面加上了這個。這表示它是成員訪問。

+0

構造函數不應該被認爲是類成員,不是嗎? –

+0

它是一個類成員,但不是字段。我談論的領域,還有功能。構造函數也是一個'函數',但你不能用'this'在同一個類中調用它。 –

+0

我明白了。我遇到的問題是,我看起來像這樣荒謬的代碼看起來像this.val = this.myMethod(this.variable1,this.variable2)。個人喜好我猜。感謝澄清,雖然... –

0

沒有,這是標準的面向對象編程,我不知道你在哪裏不引用類的成員變量,而無需使用此

+3

實際上並不是OO編程標準,更像是一個javascript/typescript問題。例如,'java'和'c#'你不必使用'this'關鍵字。 –

+0

Java,Obj-C不需要這個。 –