[英]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.