Javascript:替换函数的作用域对象
Javascript: Replace Scope Object of Function
我想知道是否可以在javascript中替换函数的作用域对象。 我有一个非常复杂的事件处理程序,我想将其从另一个函数中拉出并将其存储在其他地方。 然后,我希望能够检索处理程序,替换其作用域,并将其作为处理程序传递。
示例代码:
function A(event){
}
function B(){
// many variables initialized here that I want to be available from within A...
// the line where I would like to bind these variables to A
$form.on("submit", A);
}
JavaScript 具有词法范围,因此,它并没有提供您想要的,即从使用函数的位置提供变量。但是您可以使用以下代码来解决它:
function A(a,b,c){
return function(event) {
/* a, b, c are now available in handler */
alert(a+b+c);
};
}
function B(){
// here you define a, b, c
var a = 1, b = 2, c = 3;
$form.on("submit", A(a,b,c));
}
如果需要
,您始终可以从函数中返回所需的值,例如,如果 A() 调用 B,则可以返回这些值:
function B(){return var x = *;}
如果从 B 调用 A(),则可以将这些变量作为参数传递:
function B(){
$form.on("submit",A(x));
}
或者,您可以只为您的应用程序使用全局空间,其中所有内容对所有人都可见。如需更多信息,请发表评论,以便我解释更多。
您可以使用
闭包来执行此操作:
(function() {
// declare variables here
var variable;
function A(event){
// use them here
alert(variable);
}
function B(){
// initialize them here
variable = 'something';
$form.on("submit", A);
}
B();
})();
或者像这样:
$form.on("submit", function() { A(var1, var2, var3) });
相关文章:
- 向Angular作用域对象添加对象数组——TypeError
- 阻止控制器创建新的作用域对象
- 本地作用域对象
- 更新侧自调用函数中的外部作用域对象
- Javascript:替换函数的作用域对象
- 自定义指令中作用域对象内的嵌套对象
- 在作用域对象中定义但不可访问的属性
- 在绑定元素时从作用域对象添加格式
- AngularJs:将作用域对象的属性绑定到指令
- 正在与子指令作用域共享作用域对象
- 如何在显示之前格式化作用域对象中的数据
- 监视包含特殊字符作为关键字的作用域对象
- AngularJS指令没有设置第二级作用域对象
- AngularJS指令访问相同的作用域对象——避免覆盖
- 在Angular应用之外分配作用域对象
- Angularjs的ng-repeat带过滤器作用域对象
- 将作用域对象传递给可以监视和更新它的服务
- 如何将变量求值到局部作用域对象's属性,而不是JavaScript中的全局范围
- 如何在ng类指令中计算作用域对象
- AngularJS在调用rest式服务和作用域对象更新后选择值丢失