繁体   English   中英

JS-通过引用传递对象

[英]JS - passing by reference an object

给定下面的代码,我创建了一个名为foo的对象,并希望通过我的名为maketrue(obj)的函数使'a'等于true。

var foo = {a: false, b: false, c: false}

 function maketrue(obj)
 {
 obj = true;    
 }

 maketrue(foo.a); // I want to make 'a' true from the function

 console.log(foo.a);

为什么它仍然返回false?

我看过类似的问题,这些问题可以通过对象,但是我的方法没有通过引用。

您没有将对象作为参数传递(将通过引用传递),而是仅传递了对象属性的布尔值(按值传递)。

如果您想要这样的话可以工作:

 var foo = {a: false, b: false, c: false}

 function maketrue(obj, val)
 {
 obj[val] = true;    
 }

 maketrue(foo, 'a'); // I want to make 'a' true from the function

 console.log(foo.a);

在JavaScript中,对象表示为引用。 foo.a不是对象,但是foo是。 尝试这个:

 var foo = {a: false, b: false, c: false}

 function maketrue(obj)
 {
 obj.a = true;    
 }

 maketrue(foo);

 console.log(foo.a);

更改为:

var foo = {a: false, b: false, c: false}

 function maketrue(obj)
 {
 obj.a = true;    
 }

 maketrue(foo);

 console.log(foo.a);

使用Javascript处理对象属性

var foo = {a: false, b:false, c:false}    

/**
 * Way Object
 */
function maketrue(obj)
{   
    obj.a = true;  // Specific property
}
maketrue(foo);

/**
 * Way Property
 */
function maketrue(obj, prop)
{   
    obj[prop] = true;  // property as a parameter
}
maketrue(foo, 'a');

console.log(foo.a);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM