Phi*_*hil 0 javascript typescript angular
我想知道在引用实例变量时是否每次都必须使用"this"关键字.来自Java我只习惯在另一个范围内有另一个具有相同名称的变量时使用"this"(例如.this.arg = arg).但是在Typescript的所有教程中,每当引用实例变量(public studentName:string;)时,人们似乎都会使用"this".因此,如果我需要使用一个没有相同名称的参数的简单方法,我真的需要这样做:
let nameOfTheStudent=this.studentName;
Run Code Online (Sandbox Code Playgroud)
首先,如果我不想一直写出令人困惑的"这个"?
是的,如果要访问类字段,则必须使用this.field.不过,这是一个非常简短而无聊的答案,所以这里有一些背景.
关于JavaScript/TypeScript类的一个重要事项是它们只是现有基于原型的对象系统的语法糖.例如,这两段代码在功能上是等价的:
// ===== Class syntax =====
class MyClass {
myField: string;
constructor() {
this.myField = "Hello, world!";
}
myMethod() {
return this.myField;
}
}
let myInstance = new MyClass();
// ===== Prototype syntax =====
function MyClass() {
this.myField = "Hello, world!";
}
MyClass.prototype.myMethod = function() {
return this.myField;
};
let myInstance = new MyClass();
Run Code Online (Sandbox Code Playgroud)
实际上,如果你看一下TypeScript编译器生成的JavaScript,后一个例子可能就是你会看到的(给予或接受).所以实际上,尽管你可以在你的代码中使用类字段,但JavaScript并没有任何关于它们的概念 - 你只是在构造函数上获取和设置属性.
该规范不是使类具有与普通函数不同的语法规则,而是旨在使映射尽可能与现有规则保持一致,并使类语法保持最小.这就是您必须指定的原因this,与Java或C#不同.
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |