Объекты JavaScript (и функции) не копируются при передаче в качестве параметров. Взгляните на следующий код (или протестируйте его на JSFiddle ):
function Foo() {};
Foo.prototype.property = 5;
function incrementProperty(parameter) { parameter.property++; };
var foo = new Foo();
alert(foo.property); // 5
incrementProperty(foo);
alert(foo.property); // 6
alert(new Foo().property); // 5, because it's a new object
Объект foo
копируется , а не , когда он передается в функцию bar
. Это подтверждается тем фактом, что foo
s property
сохраняет значение вне метода. Проще говоря, foo
и parameter
указывают на один и тот же объект.
Имейте в виду, что они сами не являются одним и тем же объектом. Если вы переназначите parameter
, чтобы указать новое значение в функции bar
(parameter = "dummy";
), это не повлияет на foo
. Имеет ли это различие смысл?
Примечание: строки и числа JavaScript копируются, когда они передаются в качестве параметров.