默认情况下返回一个属性值

Return a property value by default

本文关键字:一个 属性 情况下 返回 默认      更新时间:2023-09-26

我想知道是否有一种方法可以为javascript对象提供默认返回值。我将试着用一个例子来解释:

:

Obj1 = {'prop1' = 'something1',
        'prop2' = 'something2',
        'active' = typeof XMLobj.propX === 'undefined' ? false : true} //XMLobj comes from somewhere else

因为我想让这个对象成为另一个对象的一部分,所以我想要像

这样的东西
If (otherObj.Obj1) { //do something using prop1 and/or prop2 }.

,其中otherObj.Obj1返回活动字段的值,而不必检查otherObj.Obj1.active

背后的原因可能是糟糕的代码(我的错)。我用If (otherObj.Obj1)写了几个函数。我当时并不关心它的属性,但现在我想进一步扩展,我想避免(如果可能的话)使用这样的东西:

otherObj.Obj1 = typeof XMLobj.propX === 'undefined' ? false : true} //XMLobj comes from somewhere else
otherObj.Obj1Prop1 = 'something1'
otherObj.Obj1Prop2 = 'something2'

任何建议吗?由于

JavaScript在简单引用对象时不会返回对象的字段。它必须返回对象本身。在一些具有静态类型信息的语言中,可能会发生这种情况(我认为VB就是这样做的)。JavaScript没有静态类型,所以它需要返回对象。它没有办法告诉什么时候返回对象,什么时候返回对象中的'default'字段。

这是不正确的对象文字表示法:

Obj1 = {'prop1' = 'something1',
        'prop2' = 'something2',
        'active' = true or false}
应:

var someCondition = // Make this evaluate to true or false based on whether it's active.
var otherObj = {Obj1 : {prop1: 'something1',
        prop2: 'something2',
        active: someCondition ? true : false}
        };

检查对象active属性的正常方法:

if(otherObj.Obj1.active) { //do something using prop1 and/or prop2 }.

如果你这样做:otherObj.Obj1 = true;你正在清除你的对象