我正在更新一个检查如下参数的脚本:
if (config.param) {//do...}
这导致了一些真实性问题。我实现了一个truthy()函数作为原型,以便能够执行以下操作:
if (config.param.truthy()) {//do...}
在我记得配置对象只包含明确设置的params之前,这似乎很好。所以config.value通常是未定义的而不是false。
我通过String/Number/Boolean.prototype.truthy
在适当的范围内添加了原型。
是否可以在配置对象上实现原型,以便它能够在未定义的参数上返回false?
编辑:我的问题不是关于真实性(我可以简单地使用函数),而是如何在对象上实现原型,使其由其属性继承,这些属性可以是不同类型或不存在。
答案 0 :(得分:0)
if ("param" in config && !!config.param) {//...
或者如果你想使用默认值,如果未定义,那么
config.param = config.param || defaultValue
在这种情况下,原型设计的整个问题是假名值不会自动生成objects
,因此尝试调用它们的方法会导致错误。
答案 1 :(得分:-1)
假设你的params都是不同类型的数据,那么你为Strings / Booleans / etc添加原型方法的方法可以很好地工作。然后,您可以通过执行
来查看该属性是否存在if (config.hasOwnProperty("param") && config.param.truthy() ) {//do...}
或者如果您使用的是动态媒体资源名称
if( config.hasOwnProperty(param) && config[param].truthy() ) {//do...}