如何更改对象属性的位置?

时间:2015-10-12 07:59:09

标签: javascript oop object

我有一个对象playerInfoObject,其属性为w1和w2,它们也是对象。

我需要改变彼此之间的位置

当我尝试这样做时,它们变得平等:

CommandParameter="{Binding RelativeSource={RelativeSource Self}}"

我该如何解决这个问题?

提前谢谢

2 个答案:

答案 0 :(得分:0)

如果您可以使用EcmaScript 6,destructuring assignment可以在没有临时变量的情况下解决它:

playerInfoObject = {
  w1: {w: '1'},
  w2: {w: '2'}
};

[playerInfoObject.w1, playerInfoObject.w2] = [playerInfoObject.w2, playerInfoObject.w1];

或直接使用object destructuring

({w1: playerInfoObject.w2, w2: playerInfoObject.w1}) = playerInfoObject;

否则,您的代码似乎工作正常。

答案 1 :(得分:0)

=运算符在对象之间放置引用,您需要克隆它。

var tmp = JSON.decode(JSON.encode(playerInfoObject.w1));
playerInfoObject.w1 = JSON.decode(JSON.encode(playerInfoObject.w2));
playerInfoObject.w2 = tmp;

你可以找到更优雅的克隆对象的方法,但这应该有效。