Javascript 按值传递函数与按引用传递函数



当我这样做时

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

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

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

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

所有非基元值都在 JS 中通过引用传递。

function a(val) { a.val = val; }
a(1);
a.val; //1
var b = a;
b(2);
a.val; //2

但是,如果您的意思是,当您为变量分配新的引用时,您希望更新引用相同内存地址的所有其他变量,以便它们也引用该新内存地址,这实际上是不可能的,如果您需要此功能,则设计中存在严重缺陷。

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"

最新更新