我正在将一个对象传递给一个函数.我正在拉出对象的属性,这是一个易于阅读的子对象.但是,第二个对象不影响它在第一个对象上的类似属性.为什么是这样?
我希望在保存事件时更新函数作用域之外的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
});
}
};
Run Code Online (Sandbox Code Playgroud)
而这不是
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
});
}
};
Run Code Online (Sandbox Code Playgroud)
var event = processItem.event
Run Code Online (Sandbox Code Playgroud)
现在event指的是同样的事情processItem.event
event = response.data
Run Code Online (Sandbox Code Playgroud)
现在event指的是同一个东西response.data,并且不再指代相同的东西processItem.event.它与...非常不同
processItem.event = response.data
Run Code Online (Sandbox Code Playgroud)
这将processItem.event与共同引用response.data(但不再与之event相关).
这与函数参数无关,但事实上JavaScript具有引用,而不是别名.
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |