如何通过引用将属性传递给javascript函数?

如何通过引用将属性传递给javascript函数?,javascript,function,dom,Javascript,Function,Dom,我想在java脚本函数中操作我的页面元素的一些属性,看看这个例子,也许你能找到一个解决方案 function doubleup(attr){ attr*=2; } doubleup(myDIV.style.zIndex); doubleup(myDIV.style.opacity); 简而言之,你没有。不能通过引用传递基元值。 不过,您可以使用非原语值来实现这一点,因为它们始终作为引用传递。例如: function doubleup(object, property) { object

我想在java脚本函数中操作我的页面元素的一些属性,看看这个例子,也许你能找到一个解决方案

function doubleup(attr){
attr*=2;
}
doubleup(myDIV.style.zIndex);
doubleup(myDIV.style.opacity);

简而言之,你没有。不能通过引用传递基元值。 不过,您可以使用非原语值来实现这一点,因为它们始终作为引用传递。例如:

function doubleup(object, property) {
    object[propety] *= 2;
}
doubleup(myDiv.style, "zIndex");
doubleup(myDiv.style, "opacity");

基本数据类型是字符串、数字、布尔值,最近是s

您只将此属性的值传递给函数,因此您不更改样式元素,只更改值,可以通过以下方式执行:

function doubleup(attr){
    return attr*=2;
}

myDIV.style.opacity = doubleup(myDIV.style.opacity);
myDIV.style.zIndex = doubleup(myDIV.style.zIndex);
顺便说一下,您必须使用
zIndex
而不是
z-index
来操作此值

另一种可能的解决办法是:

function doubleup(el){
    el.style.opacity*=2;
}
function doubleupZIndex(el){
    el.style.zIndex*=2;
}

doubleupOpacity(myDIV);
doubleupZIndex(myDIV);

您可以使用非基本值来实现这一点,但“不,您不能”。“通过引用传递”是一个具有特定含义的特定术语:在调用函数时将引用传递给正在使用的变量。(当然,这是JavaScript没有的功能。)传递对象引用仍然是按值传递的(值就是对象引用)。@t.J.Crowder好吧,你说得对。为了简单起见,我写了这篇文章,但更正确的说法是,非基本值总是被引用的;对象被引用。值是在变量之间复制的,当它们传递到函数中,从函数中出来时,等等。一种值是数字。另一种值是对象引用。对象不是值。@T.J.Crowder很好,我们可以说是非原始数据类型。不过,我不知道这对这一点有什么帮助。