gpt4 book ai didi

javascript - 如果 Typescript 对象中未定义 setter 或属性,则不执行任何操作?

转载 作者:行者123 更新时间:2023-12-01 03:58:01 25 4
gpt4 key购买 nike

是否可以检查Typescript对象中是否没有定义setter?

我有以下代码:

class Sample {
private _name;

set name(value: string) {
value = value.trim();
if(value.length > 0)
this._name = value;
}

get name(): string {
return this._name;
}
}

我通过 html 表单中的更改监听器设置值。

问题是,如果我有一个表单元素,它会在 undefined object 属性上显示什么内容,它只会设置它。

sample = new Sample();
sample.name = "myName";
sample.myTest = true;

返回一个像这样的对象:

{
name: "myName";
myTest: true;
}

如何防止未定义的属性不被设置?

使用sample.hasOwnProperty(propertyName) 总是返回 false。 sample.hasOwnProperty('_' + propertyName) 也会返回 false。

sample[propertyName] === undefined 在sample.name 上返回 true,因为在初始化对象时未设置值。

最佳答案

您可以检查实例constructor.prototype是否具有以下属性:

let sample = new Sample();
console.log(sample.constructor.prototype.hasOwnProperty("name")); // true

let object = {};
console.log(object.constructor.prototype.hasOwnProperty("name")); // false

( code in playground )

关于javascript - 如果 Typescript 对象中未定义 setter 或属性,则不执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com