Dra*_*zah 2 javascript javascript-objects
在这个简单的脚本中,我尝试更改包含在其中的字符串的值a.person.为什么不更新它object.property的价值?
function searchObject(object, value) {
object = value;
}
var a = {
person: "Ian"
};
searchObject(a.person, "James");
document.write(a.person);Run Code Online (Sandbox Code Playgroud)
我认为输出应该是"詹姆斯",而不是"伊恩".为什么不更新我的对象?
你现在正在做的是用object值替换局部变量value.你可以做的是做到这一点:
function searchObject(object, property, value) {
object[property] = value;
}
var a = {
person: "Ian"
};
searchObject(a, 'person', "James");
document.write(a.person);Run Code Online (Sandbox Code Playgroud)
那么你不会替换局部变量,而是替换对象的属性.对象仍然引用相同的东西,在此代码中,您正在编辑对象,而不是在本地替换它.
这是因为在JavaScript中,每个函数参数都是按值传递的,但由于对象存储为指针而不是它们的值,这意味着如果放入a函数参数,则只给出对象的内存地址.如果您再次访问该函数中的该变量,它将是指向同一事物的指针.然后更改其中的属性也将更改实际对象中的属性.