gpt4 book ai didi

javascript - 在将属性分配给 JavaScript 中的对象之前验证/预处理属性

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

在 JavaScript 中将属性分配给对象之前验证和/或预处理属性的最佳实践是什么?

其应用是创建一个对象并保证它的特定属性始终具有特定类型,或者可能对其进行一些预处理。

例如,如果我创建一个对象:

var obj = {
settings: {}
};

然后当我做类似的事情时:

obj.settings = "{foo: bar}";

它会自动检查赋值的类型 - 如果它是字符串,它会尝试将其解析为对象;如果它是一个对象,它只会分配它;否则会抛出错误。这将保护对象的属性不被分配给“任何东西”。

此外,这在 JavaScript 中有意义吗?还是我只是想在弱类型语言中拥有强类型功能?

最佳答案

您可以使用Object.defineProperty来做到这一点:

var obj = {}
Object.defineProperty(obj, 'settings', {
set: function (x) {
if (typeof x === 'string') {
this._settings = JSON.parse(x)
} else {
this._settings = x
}
},
get: function () {
return this._settings
}
})

obj.settings = {foo: 'bar'}
console.log(obj.settings)
obj.settings = '{foo: "baz"}'
console.log(obj.settings)

但是,是否需要这取决于您的具体用例。坦率地说,到目前为止我从未使用过它。我的建议是:不要花哨:)

恕我直言,这不是强类型,而是相反,因为你更加动态。如果你想要强类型,你可以尝试 flowTypeScript

关于javascript - 在将属性分配给 JavaScript 中的对象之前验证/预处理属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698712/

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