Javascript (jQuery)can';t多次追加同一对象

Javascript (jQuery)can';t多次追加同一对象,javascript,jquery,Javascript,Jquery,我可以理解clone()方法在附加复制元素时的用途,如下所示: $aObject = $('.className').clone(); $aObject.removeAttr('id'); $('#add-line').click(function() { $('#container').append( $aObject.clone()); }); 但我不明白的是,如果我放弃克隆方法,只使用 $('#container').append( $aObject); 我仍然可以将多个相同的对

我可以理解clone()方法在附加复制元素时的用途,如下所示:

$aObject = $('.className').clone();
$aObject.removeAttr('id');
$('#add-line').click(function() {
   $('#container').append( $aObject.clone());
});
但我不明白的是,如果我放弃克隆方法,只使用

$('#container').append( $aObject);

我仍然可以将多个相同的对象添加到容器中,但似乎只能添加一次AOObject?难道我们不能像添加相同对象的数组一样故意多次添加相同的对象吗?

在JavaScript中将对象分配给变量时,实际上并不是分配存储在内存中的对象值,而是指向对象在内存中位置的引用

因此,当您声明$AOObject时,您现在已经存储了对特定对象的引用。当您附加它时,它的行为与您预期的一样,即附加您正在引用的对象。当你再次尝试做同样的事情时,它指的是现在已经存在于DOM中的同一个对象,并简单地获取该对象并重新附加它(Scott Marcus所说的“它充当移动”的意思)


如果您首先克隆它,那么您引用的是一个完全不同的对象,它可以附加到您已经附加的任何对象之外。

您是在函数内部执行此操作的吗?如果不是,您是否隐式声明了
$aObject
?如果对现有对象调用
.append()
,它将充当
移动
。谢谢您的回答。但是为什么jQuery不允许多次附加同一个对象呢?正如我在评论中所说的,对现有项执行
.append()
操作会导致移动。如果要附加新项目,需要先制作副本并附加副本。