Javascript 我怎样才能停止通过引用传递?

Javascript 我怎样才能停止通过引用传递?,javascript,jquery,pass-by-reference,Javascript,Jquery,Pass By Reference,我在通过引用或值传递时遇到问题 我知道人们可能会认为这是一个重复的帖子,但我并没有找到解决这个问题的方法 我有点像: //<div data-content="{bigObject}" id="SomeId"></div> // Originally bigObject was something like: bigObject = { place : 'home', time : '' }; $('#SomeId').click(functi

我在通过引用或值传递时遇到问题

我知道人们可能会认为这是一个重复的帖子,但我并没有找到解决这个问题的方法

我有点像:

//<div data-content="{bigObject}" id="SomeId"></div>

   // Originally bigObject was something like:

bigObject = {
    place : 'home',
    time : ''
};

$('#SomeId').click(function(){
    $(this).someFunction();
});

(function($){
    $.fn.someFunction = function(){
        var m = {
            obj : this,
            bigObject : '',
            initialize : function(){
                m.bigObject = m.obj.data('content');
                m.manipulateObject();
            },
            manipulateObject : function(){
                m.bigObject.place = 'work';
            }
        }
        m.initialize();
        return m.obj;
    }
})(jQuery);
//
//最初,bigObject类似于:
bigObject={
地点:'家',
时间:“”
};
$('#SomeId')。单击(函数(){
$(this.someFunction();
});
(函数($){
$.fn.someFunction=函数(){
var m={
obj:这个,
bigObject:“”,
初始化:函数(){
m、 bigObject=m.obj.data(“内容”);
m、 操纵对象();
},
操纵对象:函数(){
m、 bigObject.place='work';
}
}
m、 初始化();
返回m.obj;
}
})(jQuery);
问题是当我单击
SomeId
时,大对象在div的
data('content')
和函数
m.bigObject.place中都发生了变化


有办法不同时更改它们吗?

您可以创建对象的新副本并使用它。你可以用它

var newObject = $.extend({}, m.bigObject);
而不是做

manipulateObject : function(){
    m.bigObject.place = 'work';
}
你可以做:

manipulateObject : function(object){
    object.place = 'work';
}

把东西放在别的地方?比如哪里?似乎不管我把它放在哪里。它不断经过ref..噢,我明白了,您需要执行
var newObject=jQuery.extend({},oldObject)我试图传递它而不是引用我试图执行bigObject.clone(),它抛出并出错你不能克隆一个对象,但你可以使用$.extend来创建一个包含完全相同数据的新对象。不,我要做的只是代替
m.bigObject=m.obj.data('content')我将克隆对象,然后使用它。