在我的应用程序中,当我将它传递给不同的对象时,我不确定是否复制数据。正如一个例子看看下面的代码: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