当我这样做时
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"