2016-05-12 43 views
-1

我想這一點:創建嵌套對象的一小段路

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

這是被稱爲點符號

但它不起作用,衆所周知。 所以我要做到這一點:

  • var options = {}; options.server = {} options.server.socketOptions = {} options.server.socketOptions.keepalive = 120;
  • 我能做到,而不是這樣的:

  • var options = { server: {socketOptions: {keepalive:120}}}
  • 這是JSON格式

    但是有沒有更優雅的方式使用點符號而不是JSON方式?

    如果有必要,我會使用一個幾乎只有這樣的小庫。
    但我不要想要使用類似咖啡下劃線
    首選我想知道什麼是可能的香草方式

    +0

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

    +0

    第二種方式更優雅,更易讀。可悲的是,除了使用括號表示之外,沒有其他方式可以創建它。 –

    +0

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

    回答

    1

    您可以直接在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