在JS

时间:2016-05-23 23:56:27

标签: javascript prototype

我正在更新一个检查如下参数的脚本:

if (config.param) {//do...}

这导致了一些真实性问题。我实现了一个truthy()函数作为原型,以便能够执行以下操作:

if (config.param.truthy()) {//do...}

在我记得配置对象只包含明确设置的params之前,这似乎很好。所以config.value通常是未定义的而不是false。

我通过String/Number/Boolean.prototype.truthy在适当的范围内添加了原型。 是否可以在配置对象上实现原型,以便它能够在未定义的参数上返回false?

编辑:我的问题不是关于真实性(我可以简单地使用函数),而是如何在对象上实现原型,使其由其属性继承,这些属性可以是不同类型或不存在。

2 个答案:

答案 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...}