鉴于下面的代码,我创建了一个名为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?
我已经查看了传递对象的类似问题,但我的方法没有通过引用传递。
答案 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);