我试图改变一个函数的定义:
var a = function(){alert('a');};
var b = a;
b = function(){alert('b');};
Run Code Online (Sandbox Code Playgroud)
这导致变量a保持其原始赋值,即函数生成alert('a').
有没有办法传递一个javascript函数的引用,以便我以后可以改变它?
您是否希望a在以下代码段之后更改价值?有疑问的片段:
var a = 10;
var b = a;
var b = 20;
Run Code Online (Sandbox Code Playgroud)
没有权利?所以,你为什么会想到重新分配b到还影响a?
在行之后1,您a指向了一个函数实例:

在行之后2,您有一个新变量b,也指向同一个函数实例.所以现在你有两个变量,都指向同一个实例:

在行之后3,您已经重新分配b给其他东西(一个新函数),但a 仍然指向原始函数:

通过这样做,你可以做你想做的事:
var func = function() { alert("a"); };
var a = function() { func(); };
var b = a;
func = function() { alert("b"); };
Run Code Online (Sandbox Code Playgroud)
现在调用a()或b()将警告字符串b.
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |