为什么Javascript变量没有通过引用传递对象?

Ada*_*m S 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
        });
    }
};
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)

Ama*_*dan 7

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具有引用,而不是别名.