我正在将一个对象传递给一个函数。我正在拉出对象的属性,这是一个易于阅读的子对象。但是,第二个对象不影响它在第一个对象上的类似属性。这是为什么?
我希望在保存事件时更新函数作用域之外的processItem.event。为什么必须更新processItem而不仅仅是指向它的局部变量?
这有效:
this.submitForm = function(processItem) {
var event = processItem.event
if (event.new) {
EventDataService.create(event).then(function(response) {
processItem.event = response.data;
});
} else {
EventDataService.update(event).then(function(response) {
processitem.event = response.data
});
}
};
这不是
this.submitForm = function(processItem) {
var event = processItem.event
if (event.new) {
EventDataService.create(event).then(function(response) {
event = response.data;
});
} else {
EventDataService.update(event).then(function(response) {
event = response.data
});
}
};
答案 0 :(得分:7)
var event = processItem.event
现在event
与processItem.event
event = response.data
现在event
与response.data
引用的内容相同,并且不再引用与processItem.event
相同的内容。它与
processItem.event = response.data
这会使processItem.event
与response.data
共同推荐(但不再与event
共同推荐。)
这与函数参数无关,但事实上JavaScript有引用,而不是别名。