【发布时间】:2013-11-30 17:26:16
【问题描述】:
我在通过引用或值传递时遇到问题。
我知道人们可能会认为这是重复的帖子,但我没有找到解决此问题的方法。
我有类似的东西:
//<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);
问题是当我点击SomeId 时,div 的data('content') 和函数m.bigObject.place 中的大对象都发生了变化
有没有办法不同时改变它们?
【问题讨论】:
-
只是将对象存储在其他地方?
-
喜欢在哪里?无论我将它存储在哪里,它似乎都是如此。它一直通过参考..
-
哦,我明白了,你需要做
var newObject = jQuery.extend({}, oldObject); -
我试图通过引用而不是通过引用传递它我尝试做 bigObject.clone() 并且它抛出并出错
-
您无法克隆对象,但可以使用 $.extend 创建包含完全相同数据的新对象。
标签: javascript jquery pass-by-reference