簡體   English   中英

打字稿成員函數最佳實踐

[英]Typescript member function best practice

在閱讀打字稿中的this關鍵字和粗箭頭運算符時,我遇到了一個示例,這使我想知道在類中聲明成員方法的最佳方法是什么?

本質上,這之間是有區別的:

class MyClass {
    private status = "blah";

    public run = () => { // <-- note syntax here
        alert(this.status);
    }
}

和這個:

class MyClass {
    private status = "blah";

    public run() {
        alert(this.status);
    }
}

如果聲明一個正常函數:

public run() { /*...*/ }

它將在原型上聲明:

MyClass.prototype.run = function () { /*...*/ };

但是,如果您聲明粗箭頭功能:

public run2 = () => { /*...*/ }

它會在您的類的每個實例上聲明,並且將綁定到該類。

function MyClass() {
    this.run2 = function () { /*...*/ };
}

現在考慮一下:

class MyClass {
    private status = "blah";

    public run() {
        alert(this.status);
    }
    public run2 = () => {
        alert(this.status);
    }
}
var obj = new MyClass();
obj.run(); // alerts 'blah'
obj.run2(); // alerts 'blah'
var p = { run: obj.run, run2: obj.run2 };
p.run(); // alerts 'undefined'
p.run2(); // alerts 'blah'

暫無
暫無

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

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