将函数引用传递给嵌套闭包
Pass a function reference to a nested closure
在下面的代码中,我想将对驻留在父作用域上的函数的引用传递给函数"嵌套"的嵌套作用域,以便我可以从嵌套函数调用父作用域上的函数。我尝试将其作为参数传入,但它不起作用。我只是在学习/弄乱嵌套闭包,想知道是否可以做到这一点。
我希望调用nested
的语法是:callme.nested()
var obj = function(val){
var access = val;
var apex = 0;
return {
callme : (function(siblyng){
var privatevar = 2;
return {
nested : function(){
privatevar++;
apex = privatevar;
return access + " " + privatevar + " " + siblyng("child");
}
}
})(this.sibling),
assess : function(){
return apex + " " + this.sibling("parent");
},
sibling : function(val){
return "returned from " + val + " scope";
}
}
}
var objref = obj(true);
console.log(objref.callme.nested());
console.log(objref.callme.nested());
console.log(objref.callme.nested());
console.log(objref.assess());
console.log(objref.sibling('global'));
如果我很了解你,你可以这样做
var obj = function(val){
var access = val;
var apex = 0;
var ret;
return (ret = {
callme : function() {
var privatevar = 2;
return {
nested : function(){
privatevar++;
apex = privatevar;
return access + " " + privatevar + " " + ret.sibling("child");
}
};
}(),
assess : function(){
return apex + " " + this.sibling("parent");
},
sibling : function(val){
return "returned from " + val + " scope";
}
});
};
var objref = obj(true);
console.log(objref.callme.nested());
console.log(objref.callme.nested());
console.log(objref.callme.nested());
console.log(objref.assess());
console.log(objref.sibling('global'));
以下
代码中的this
指向global Window
对象,因此无法找到该方法。您可以在 nested
方法中直接调用 this.sibling
,而无需传递它。
callme : (function(siblyng){
var privatevar = 2;
return {
nested : function(){
privatevar++;
apex = privatevar;
return access + " " + privatevar + " " + siblyng("child");
}
}
})(this.sibling),
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 在underscorejs模板中使用闭包
- 将函数引用传递给嵌套闭包
- 使用请求NPM包返回带有嵌套函数的值
- D3 圆包布局中嵌套圆圈的工具提示
- 是 JavaScript 中作为闭包实现的全局/嵌套函数
- 为什么我只能在嵌套闭包链的第一个实例中声明变量
- 难以理解Javascript嵌套函数/闭包
- 简单闭包与具有嵌套函数返回的闭包
- Node.js automapper ts包未映射嵌套对象/属性
- Javascript从字符串访问嵌套的闭包公共函数,而不使用'这'
- 如何在javascript中为闭包编译器注释嵌套对象,并使所有属性都是可选的
- 如何使用闭包的apply/call通过嵌套对象传递变量
- “闭包”是怎么做到的?影响jQuery中dom节点的嵌套遍历
- 嵌套循环中匿名闭包的可读性
- 是为每个嵌套函数创建的单独闭包实例
- 具有深度嵌套的JS闭包
- 如何编写Angularjs的嵌套跨包