对象(复制)参数更改原始更改

时间:2014-07-28 13:19:14

标签: javascript jquery

这不是关于"如何"但是"为什么"

我在Chrome浏览器中观察到了一些wird对象行为(36.0.1985.125)。 如果我将对象复制到不同变量并更改该复制数据原始对象发生更改。

这怎么可能?

以下是重要的代码:

var argsForNewAjax = false;

function news_ajax(args, id){
    var ajaxStartTime = new Date().getTime();
    var temp = argsForNewAjax;
    if(argsForNewAjax){
        args = argsForNewAjax;
    }
    else{
        args.action = "get_news";
        args.numberposts = (isDefined(args.numberposts) ? args.numberposts : 4);
    }
    argsForNewAjax = jQuery.extend({}, args); //if i change this line to the one comented
    //argsForNewAjax = args
    argsForNewAjax.offset = argsForNewAjax.offset + args.numberposts;

    console.log(args);
    $.ajax({
    //JQ ajax ...

使用jquery.extend

的结果
  • 对象被复制和更新,args保持不变

widouth jquery

  • 对象被复制但是当它的值改变原始(args)改变

所以我的问题是,如果它在JS中复制更改,价值怎么会改变?

0 个答案:

没有答案