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不需要这个。 –