32

たとえば、これを行うことはできますか?:

{ 
   a: b: c: d: 1,
   e: 2,
   geh: function() { alert("Hi!") }
}

編集:私がこれを避けることができるいくつかの方法はありますか?:

{ 
   a: 1,
   b: 1,
   c: 1,
   d: 1,
   e: 2,
   geh: function() { alert("Hi!") }
}
4

7 に答える 7

28

これを (最新の JavaScript 機能に関して) 更新して、不要な定義済み変数を回避します。

{
  let v;
  var obj = {
     "a": (v = 'some value'),
     "b": v,
     "c": v
  };
}

これはv、ブロックの外では定義されないことを意味しますが、定義されobjます。

元の答え

同じことを行う別の方法は次のとおりです。

var v;
var obj = {
     "a": (v = 'some value'),
     "b": v,
     "c": v
};
于 2012-10-28T09:08:50.293 に答える
13

さまざまなプロパティ間に等値線を設定できます。

var foo = {};
foo.a = foo.b = foo.c = "Hello";

または、一括割り当てを行うメソッドを作成することもできます。

var foo = {
    setValue: function( props, value ) {
        while ( props.length ) this[ props.pop() ] = value;
    }
}

foo.setValue( [ "a", "b", "c" ] , "Foo" );
于 2012-10-27T23:17:19.313 に答える