有没有办法强迫对象字面中的子项顺序?

时间:2013-05-29 15:15:14

标签: jquery arrays object soap

我遇到了麻烦我正在使用jQuery将子(变量,数组和对象)存储在对象文字中。

var LoginVO = LoginVO || {};

(function($){

LoginVO.username = '';
LoginVO.password = '';
LoginVO.loginDate = '';
LoginVO.userId = '';

LoginVO.authenticated = false;
LoginVO.accountNonExpired = false;
LoginVO.accountNonLocked = false;
LoginVO.credentialsNonExpired = false;
LoginVO.enabled = false;
LoginVO.salt = '';

LoginVO.timeOfLastWebServiceCall = '';
LoginVO.timeOfLastRawHttpCall = '';

LoginVO.remoteAddress = '';
LoginVO.sessionId = '';

})(jQuery的);

当我调用时,我将这些对象填充到模型对象中。所以稍后我会引用或操纵这个孩子

modelLocator.Login.sessionId = ;1234';

然后在应用程序的某些时候我需要更新这些孩子。然后我需要将它们组装成XML字符串,以便在soap信封中传回服务器。但是,Soap消息必须按特定顺序排列。我按照它在xsd中出现的顺序定义了子对象。我正在做的问题因为我做了我的循环我让孩子们无序。我无法改变后端或xsd,我无法将传输从SOAP更改为其他内容。有人可以建议一种方法来命令孩子在创作时,或者当我做for循环来控制孩子如何被添加的顺序?

感谢您的时间

杰夫

1 个答案:

答案 0 :(得分:0)

对象属性应该是无序的。如果顺序很重要,请使用具有所需顺序的属性名称的数组,然后循环使用该数组。

arr_desired_order = ["username","password","loginDate", /* etc. */ ];

for (var i=0, j=arr_desired_order.length; i<j; i++) {
    var key = arr_desired_order[i],
        val = LoginVO[key];
    // do something with key and val
};