创建嵌套对象的一小段路

问题描述:

我想这一点:创建嵌套对象的一小段路

  1. var options.server.socketOptions.keepalive = 120;

这是被称为点符号

但它不起作用,众所周知。 所以我要做到这一点:

  1. var options = {}; options.server = {} options.server.socketOptions = {} options.server.socketOptions.keepalive = 120;
  2. 我能做到,而不是这样的:

    1. var options = { server: {socketOptions: {keepalive:120}}}
    2. 这是JSON格式

      但是有没有更优雅的方式使用点符号而不是JSON方式?

      如果有必要,我会使用一个几乎只有这样的小库。
      但我不要想要使用类似咖啡下划线
      首选我想知道什么是可能的香草方式

    开始=>
开始=>
+0

_var options = {server:{socketOptions:{keepalive:120}}} _这是最短的方式 – Sapotero

+0

第二种方式更优雅,更易读。可悲的是,除了使用括号表示之外,没有其他方式可以创建它。 –

+0

你可以用你的方法覆盖一些其他的属性/值(比如'option.something' ...) –

您可以直接在JavaScript中使用对象文字。
但是你可以使用一个辅助函数来构造对象:

function build(props, value) { 
    return props.split('.').reverse().reduce(function(acc, key, index) { 
    if (index === 0) { 
     acc[key] = value; 
     return acc; 
    } 
    var obj = {}; 
    obj[key] = acc; 
    return obj; 
    }, {}); 
} 

var options = build('server.socketOptions.keepalive', 120); 

console.log(obj); // prints { server: {socketOptions: { keepalive:120 } } } 

检查the demo