Javascript按值和引用传递函数

时间:2014-03-04 14:36:31

标签: javascript

当我这样做时

function foo(){//some stuff..}
var bar = foo;

我正在将foo复制到bar,对吗?

有没有办法将一个函数分配给一个指向一个函数而不是复制它的变量?这样我可能会为一些变量分配相同的功能,一旦更新了这个功能,所有分配的变量也会更新。

我知道我可以通过原型继承来做到这一点,但我特别询问是否可以使用简单的变量赋值?

2 个答案:

答案 0 :(得分:0)

所有非原始值都通过JS中的引用传递。

function a(val) { a.val = val; }

a(1);

a.val; //1

var b = a;

b(2);

a.val; //2

但是,如果您的意思是在为变量分配新引用时,您希望更新引用相同内存地址的所有其他变量,以便它们也引用该新内存地址,这不是真的如果你需要这个功能,你的设计就会有严重的缺陷。

答案 1 :(得分:0)

foo没有被复制到bar但foo和bar指的是同一个函数对象。您的代码与此类似

var foo,bar;
foo = bar = function() {};

这里foo和bar是对同一个函数对象的引用。 证明:

foo.a = "Modified by foo";
alert(bar.a); // echo's "Modified by foo"