[英]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.