[英]Why does TypeScript define properties on the prototype and not the object?
我有一個數據對象,並且在TypeScript中定義了一個屬性,例如:
get name() {
return this._hiddenName;
}
set name(value) {
...stuff...
this._hiddenName = value;
}
但是當我去輸出代碼時,我看到
Object.defineProperty(MyObject.prototype, "name", {
因此該屬性存在於原型而不是對象上。 當我想調用它時很好,但是當我想使用Object.keys()遍歷對象的屬性時,這些屬性將不會被拾取。
具體來說,我正在將具有屬性的對象傳遞到Angular的FormGroup中,並嘗試使用Object.keys將對象映射到表單,該對象找到我的支持屬性,而不是我實際上想要公開的屬性。
如果定義一個類,則所有方法和獲取器/設置器都將位於原型中:
class MyObject {
private _hiddenName: string
get name() {
return this._hiddenName;
}
set name(value) {
this._hiddenName = value;
}
}
但是您可以定義一個對象:
let obj = {
_hiddenName: "abc",
get name() {
return this._hiddenName;
},
set name(value) {
this._hiddenName = value;
}
}
在這里,getter和setter在對象中。 編譯后的代碼與TypeScript代碼相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.