在我的應用程序中,當我將它傳遞給不同的對象時,我不確定是否複製數據。正如一個例子看看下面的代碼:Javascript:通過引用傳遞對象
var DataStore = function(data) {
this.data = data; // <-- typeof data === 'object'
}
var Controller = function() {
var dataStore = new DataStore({foo: 'bar'});
var plugin = new Plugin(dataStore.data);
}
var Plugin = function(data) {
this.data = data;
}
var app = new Controller();
當我創建插件它傳遞數據屬性從dataStore。然後將其分配給Plugin內的屬性。請記住,傳遞的數據是一個對象,我的問題是,這是在內存中創建兩個變量,還是Plugin中的data屬性引用DataStore對象中的屬性?
如果在賦值之後沒有保留引用,我該如何將DataStore傳遞到插件並在本地保存對它的引用?或者我需要將DataStore作爲全局變量保存在我的應用程序範圍中,並從插件全局引用它?
AFAIK JavaScript對象總是引用 – 2012-07-17 05:25:50
@AlvinWong不太。像JavaScript這樣的ECMAScript實現中的對象只能通過引用來訪問,而對象引用則是可以賦值的*值*。從其他編程語言*中已知的引用調用*不存在*,它總是*按值調用。這與例如Java中的相同。 – PointedEars 2012-07-17 05:32:37