我有一个对象,它可以是任意多个级别的深度,并且可以具有任何现有属性。例如:
var obj = {
db: {
mongodb: {
host: 'localhost'
}
}
};
在此我想设置(或覆盖)属性,如下所示:
set('db.mongodb.user', 'root');
// or:
set('foo.bar', 'baz');
属性字符串可以具有任何深度,并且值可以是任何类型/事物。
如果属性键已经存在,则不需要合并对象和数组作为值。
前面的示例将产生以下对象:
var obj = {
db: {
mongodb: {
host: 'localhost',
user: 'root'
}
},
foo: {
bar: baz
}
};
如何实现这种功能?
set('foo', 'bar'); set('foo.baz', 'qux');
,其中foo
第一持有String
就变成一个Object
?发生什么事了'bar'
?