Javascript:通过引用传递函数,而不是通过值传递函数

时间:2014-07-01 15:18:15

标签: javascript function pointers

如果我有

var foo = function() {
    console.log('foo');
}, bar = foo;

并致电bar(),控制台会记录foo。如果那时,我做

foo = function() {
    console.log('not foo');
}

并致电bar(),控制台仍会记录foo。我怎么能绕过这个?

2 个答案:

答案 0 :(得分:3)

你正在尝试做的事情并不是很明智,但是我会把你的霰弹枪送给你,爆炸! (我的意思是你的腿。)

var foo = function () { console.log("foo"); }
var bar = function () { foo(); }
bar();
var foo = function () { console.log("qux"); }
bar();

答案 1 :(得分:2)

我会创建一个对象并创建一个我想复制该对象属性的函数:

var obj = {
    bar : function(){ alert 'bar'; }
},
obj2 = obj;
obj.bar = function(){ alert 'foo'; };

然后

obj2.bar()

会输出'foo';