Javascript,用vars创建对象的最佳方法

时间:2015-03-25 00:53:29

标签: javascript underscore.js

我正在函数中创建一个对象 - 我传递了3个变量,1个是名称,2个是名称,3是数组。

所以现在我像这样创建这个对象

   createObj(var, var2, var3){
     var temp1 = {};
     var temp2 = {};

     temp2[var2] = var3;
     temp1[var] = temp2;
    }

创建和对象

 {var1 : {var2 : var3 }};

所以这很好用(我希望对象看起来像这样),但是我想知道是否有办法在不使用这么多变量的情况下做到这一点?我使用下划线,如果这使它更容易。如果有一种更优雅(并且希望)简单的方法来实现这一点,那将会很酷。我的意思是,这种方法对我来说很好,但我正在努力提高我的javascript技能,并尽可能使用更少的代码:)。谢谢!

1 个答案:

答案 0 :(得分:1)

这完全没问题。只有使用ES6才能获得允许您执行{[var1]: {[var2]: var3}}的文字。当然,如果你看到自己一遍又一遍地做这件事,你可以编写一个辅助函数 - 你实际上只是在做。

编写此函数的一种更优雅的方式可能是

function createObj(key, val) {
    if (arguments.length > 2)
         val = createObj.apply(null, Array.prototype.slice.call(arguments, 1));
    var temp = {};
    temp[key] = val;
    return temp;
}

这样它可以无限多地使用arguments。但你也可以这样做

function createObj(key, val) {
    var temp = {};
    temp[key] = val;
    return temp;
}

并将其称为createObj(var1, createObj(var2, var3)),它可以更好地表达您的意图。而且对于只有两次调用,你还不需要循环/递归。