簡體   English   中英

Angular2,Typescript-類變量和“ this”的用法

[英]Angular2, Typescript - class variables and usage of “this”

我想知道在引用實例變量時是否必須每次都使用“ this”關鍵字。 來自Java,僅當存在另一個作用域中具有相同名稱的變量時,我才使用“ this”(例如this.arg = arg)。 但是在所有Typescript教程中,似乎人們每次引用一個實例變量(公共studentName:string;)時都使用“ this”。 因此,如果我需要使用沒有同名參數的簡單方法來工作,那么我非常需要這樣做:

let nameOfTheStudent=this.studentName;

首先,如果我不想一直寫令人困惑的“ this”?

是的,如果要訪問類字段,則必須使用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();

實際上,如果您查看由TypeScript編譯器生成的JavaScript,則后面的示例可能就是您所看到的(給出或接受)。 因此,實際上,盡管您可以在代碼中使用類字段,但是JavaScript實際上並沒有任何概念-您只是在構造函數上獲取和設置屬性。

規范不是使類具有與普通函數不同的語法規則,而是設計為使映射盡可能與現有規則保持一致,並使類語法保持最小。 這就是為什么必須指定thisthis與Java或C#不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM