JavaScript嵌套对象默认值

问题描述 投票:0回答:2

所以,如果我有这样定义的对象:

var object = {
    prop1: 'val1',
    prop2: 'val2',
    prop3: {
         subprop1: 'subval1',
         subprop2: 'subval2',
         subprop3: 'subval3'
    }
}

我想知道的是是否有一种方法可以设置“默认”值,所以如果我打电话:

object.prop3

我不想得到:

Object {subprop1: "subval1", subprop2: "subval2", subprop3: "subval3"} 

相反,我想要:

defaultsubval

任何帮助将不胜感激。

javascript json nested default-value javascript-objects
2个回答
0
投票

正如上面提到的cookie怪物和jfriend00。仅使用对象表示法是不可能的。 Javascript不能那样工作。但是,我通过Getting the name of a requested subobject

找到了另一种执行相同操作的方法

0
投票

这是使用Symbol's toPrimitive的方法:

const myTheme = {
  prop1: 'val1',
  prop2: 'val2',
  color: {
    darker: 'orange',
    lighter: 'white'
  }
}

Object.defineProperty(myTheme.color, Symbol.toPrimitive, {
  value: () => 'yellow'
});

所以,我们得到了类似的东西:

console.log('primary color: ' + myTheme.color.darker) // returns "primary color: orange"
console.log('primary color: ' + myTheme.color) // returns "primary color: yellow"
© www.soinside.com 2019 - 2024. All rights reserved.