我使用以下行来存储对象的位置。
var lightboxTop = $('#lightbox').css('top');
var lightboxLeft = $('#lightbox').css('left');
我在我的元素中连续移动了这个对象,我想用存储的变量恢复它以前的位置。
但是,我担心javascript会通过引用保存值,所以我失去了初始位置。我对么 ?我该如何解决这个问题?
感谢
答案 0 :(得分:3)
在这种情况下,它不存储任何引用,而是存储实际值。
答案 1 :(得分:1)
不,返回的值不会通过引用存储。如果您更改元素的top
和left
样式,则不会影响您的存储值。
javascript中的原始类型不会通过引用传递。
var a = "a";
var b = a;
a = "c";
alert(b); // alerts "a"
alert(a); // alerts "c"
或
var a = 1;
var b = a;
a = 3;
alert(b); // alerts "1"
alert(a); // alerts "3"
通过引用传递对象:
var a = {one:"one"};
var b = a;
a.one = "three";
alert(b.one); // alerts "three"
alert(a.one); // alerts "three"
答案 2 :(得分:1)
Javascript不支持“按引用”。
var a = 1; // a is 1
var b = a; // b is set to the value of a, that is, 1
a = 2; // a is set to 2, b is still 1
传递'引用'的唯一方法是共享变量是
属性的对象var props = {};
props.a = 1;
var newprops = props; // props === newprops = true, both variables point to the same reference
newprops.a // is 1
props.a = 3;
newprops.a // is 3
如果我们替换指向对象引用的其中一个变量会发生什么?
props = {}; // props === newprops = true, props is set to a NEW object, newprops still points to the old one
props.a = 2; // is 2
newprops.a; // is still 3
答案 3 :(得分:0)
您可以尝试jQuery.clone()方法,如下所示:
var l = $('#lightbox');
var start = l.clone().hide();
然后移动l
,然后将其移除并重新显示start
。