4
我將一個對象傳遞給一個函數。爲了便於閱讀,我拉出了作爲子對象的對象的屬性。但是,第二個對象不會影響第一個對象的類似屬性。爲什麼是這樣?爲什麼JavaScript變量沒有通過引用傳遞的對象?
我希望在保存事件時更新函數範圍外的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
});
}
};
JavaScript提供了所謂的「通過共享呼叫」(https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)。在情況1中,您更改了原始對象的屬性。在情況2中,您只需重新分配引用而不更改'processItem'。 –