2012-08-08 61 views
1

比方说,我有这个功能在JavaScript在运行时添加属性到Javascript对象

function EstablishUserSession(params) { 
     gecResult = "noResult";    
     params["callbackOnSuccess"] = Success; 
     params["callbackOnException"] = Exception; 
     controller.establishUserSessionIAPI(params); 
     return "requestSent"; 
    } 

params为通过HtmlDocument.InvokeScript ..传入的对象看起来这

{ iapiUri: "dfdfdsf", language: "en", partnerUsername: "ddddd", integrationPartnerId: 1, cleartextPassword: "dddd"} 

以上在Chrome和FFox中​​运行良好。在IE8中不起作用。我得到的对象不支持属性或方法。

function EstablishUserSession(params) { 
     gecResult = "noResult"; 
     jQuery.extend(params, { callbackOnSuccess: Success, callbackOnException: Exception }); 
     controller.establishUserSessionIAPI(params); 
     return "requestSent"; 
    } 

然后我改Jquery.extend ......工作在Chrome和FFox罚款。在IE8中不起作用。

有没有人知道如何正确地扩展一个对象来添加上面的属性!

注:成功和异常只是回调

+0

你尝试遍历新对象添加每个键:值的旧对象'手动'? – adeneo 2012-08-08 10:31:17

+0

这将是我的最后手段......我希望这是一个通用框架。这些参数对象可以得到非常大的... – 2012-08-08 10:35:35

回答

0

你可以使用该对象的新副本..

var newParams = $.extend({ newProp : value}, oldParams); 
+0

以及再次在Chrome中工作...现在尝试IE ..手指交叉 – 2012-08-08 10:25:07