默认情况下返回一个属性值
Return a property value by default
我想知道是否有一种方法可以为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;
你正在清除你的对象
相关文章:
- AngularJS:如何用同一对象的另一个属性访问一个属性
- 如何为下拉列表的每个选项添加一个属性
- 如果另一个属性相同,请删除该属性
- Knockout observable没有观察到其中一个属性
- 检查来自不同数组的两个元素的一个属性是否相等
- 我想从使用onkeypress事件的文本区域获取一个属性
- ..的Javascript..循环中的对象没有在最后一个属性上运行
- 节点发布错误对象的第一个“属性”
- 如何在 XML 中搜索特定属性以检索另一个属性
- Angular JS如何观看“;只有一个属性”;
- 如果我们使用:运算符在函数内部定义一个属性,会发生什么
- AngularJS ng通过对象中的一个属性和一个文本框重复筛选
- 如何检索上一个属性的名称属性
- 如何使用jQuery只删除一个属性值而不删除另一个
- JavaScript-获取一个属性'的值
- 在ember.js记录上使用toJSON,将其中一个属性设置为null
- 如何在集合中指定模型的一个属性
- 基于一个属性Javascript检索多个对象
- 是否可以在材质ui中只更改样式道具中的一个属性
- 使用jquery从xml中选择一个属性