0
是否可以使用私有方法實現裝飾器?例如。使用私有實例方法實現TS/JS裝飾器?
class Person {
@validateSomethingFirst
public doSomething() {
}
private validateSomethingFirst() { ... }
}
我的初步調查似乎表明,這是不可能的,但我似乎無法找到一個堅實的參考。
是否可以使用私有方法實現裝飾器?例如。使用私有實例方法實現TS/JS裝飾器?
class Person {
@validateSomethingFirst
public doSomething() {
}
private validateSomethingFirst() { ... }
}
我的初步調查似乎表明,這是不可能的,但我似乎無法找到一個堅實的參考。
是的,它是可能的,如果你要將你的私有方法爲靜態:
class AAA
{
private static Dec(target: any, key: string)
{
console.log("Decorator applied");
}
@AAA.Dec
public Prop: number;
}
用實例方法將是不可能的,因爲指私有的實例方法,你將需要訪問「這個」,這將是在那個時候未定義。通過查看生成的js代碼很容易找到原因。如果我們的樣本中更改爲實例方法上面 - JS代碼將是:
var AAA = (function() {
function AAA() {
}
AAA.Dec = function (target, key) {
console.log("Decorator applied");
};
__decorate([
this.Dec,
__metadata('design:type', Number)
], AAA.prototype, "Prop", void 0);
return AAA;
})();
這裏「這」將在電話的那一刻是不確定的。
希望這會有所幫助。
[當然可以](http://stackoverflow.com/q/16919473/1048572),爲什麼不呢? – Bergi
我在問private _decorators_,而不是_functions_。謝謝! –