Javascript 角度2组件变量范围和参考
有没有办法避免总是在引用私有组件变量或函数时附加“this” 例如,以下内容将导致“foo”上出现“找不到名称”错误 要修复此问题,我需要将“this”附加到foo变量,如中所示:Javascript 角度2组件变量范围和参考,javascript,angular,typescript,Javascript,Angular,Typescript,有没有办法避免总是在引用私有组件变量或函数时附加“this” 例如,以下内容将导致“foo”上出现“找不到名称”错误 要修复此问题,我需要将“this”附加到foo变量,如中所示: console.log(this.foo); 我完全支持变量的强标识,但考虑到大多数角度组件的较小尺寸,这似乎过于严格。在JavaScript和TypeScript中,您需要使用this关键字引用该类中类的字段和函数 从 让我们看一个简单的基于类的示例: class Greeter { greeting:
console.log(this.foo);
我完全支持变量的强标识,但考虑到大多数角度组件的较小尺寸,这似乎过于严格。在
JavaScript
和TypeScript
中,您需要使用this
关键字引用该类中类的字段和函数
从
让我们看一个简单的基于类的示例:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
如果您以前使用过C#或Java,那么语法应该很熟悉。我们宣布一个新的班级迎宾员。这个类有三个成员:一个名为greeting的属性、一个构造函数和一个greetit方法
您会注意到,在类中,当我们引用类中的一个成员时,我们预先准备了这个。。这表示它是一个成员访问。构造函数不应该被视为类成员,不是吗?它是类成员,但不是字段。我讲的是字段,还有函数。构造函数也是一个
函数
,但是你不能在同一个类中调用它。我的问题是,我得到的代码看起来很可笑,看起来像这样。val=this.myMethod(this.variable1,this.variable2)。我想是个人喜好吧。谢谢你的澄清…@MikeM我和Suren在一起,这是不可能的。由于javascript中的作用域隔离问题,Typescript必须以这种方式实现类,如果不指定this.greting
,可能会意外访问窗口.greting
。coffeescript中有@greting
前缀,意思是这个。greting
也许typescript有一个等价的功能。@LenilsondeCastro,谢谢,这很有意义。如果TypeScript Transpile假设本地声明的变量和方法的作用域是这个
,如果在类中内部引用,那么其他作用域(例如窗口
)将需要显式声明,那就太好了。
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");