JS - 通过引用传递一个对象

时间:2015-06-18 19:41:18

标签: javascript

鉴于下面的代码,我创建了一个名为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?

我已经查看了传递对象的类似问题,但我的方法没有通过引用传递。

4 个答案:

答案 0 :(得分:1)

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

如果你想要这样的东西会起作用:

 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);

答案 1 :(得分:0)

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

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

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

 maketrue(foo);

 console.log(foo.a);

答案 2 :(得分:0)

将其更改为:

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

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

 maketrue(foo);

 console.log(foo.a);

答案 3 :(得分:0)

在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);