我将 css 值存储在一个对象中以用于两种不同的场景:
styles = {
on: { left:10, top:20 },
off: { left:0, top:30 }
};
我使用它的第一种方法是简单的鼠标悬停效果:
$nav.hover(
function() {
$(this).css(styles.on);
},
function() {
$(this).css(styles.off);
}
);
但是,对于我的其他用途,我正在制作动画,并且我需要额外的(非 CSS)属性,例如ease
和onComplete
。理想情况下,我希望能够复制styles
对象并将我的新属性附加到它,如下所示:
var anim = styles;
anim.ease = Power3.easeInOut;
anim.onComplete = function() {/*stuff*/};
这将适用于第二次使用,但不幸的是,由于存储了按值引用,这也会将新属性添加到原始styles
变量中,这反过来会导致.css()
方法尝试将ease
等分配为 css 值。
如何在不影响原始属性的情况下快速克隆源对象以添加新属性?
我知道围绕 Javascript 是否可以通过引用传递的论点(在 JavaScript 中是否存在按值传递之类的传递?JavaScript 是按引用传递还是按值传递语言?)但我不知道想就此展开讨论……