在下面的代碼中,我想將駐留在父作用域上的函數的引用傳遞給函數「嵌套」的嵌套作用域,以便我可以調用函數嵌套函數的父範圍。我嘗試將它作爲參數傳遞,但它不起作用。我只是在學習/搞亂嵌套關閉,並想知道這是否可以完成。將函數引用傳遞給嵌套閉包
我想有語法調用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'));
「*將駐留在父範圍內的函數的引用傳遞給函數嵌套的*」的嵌套範圍。請說明哪個是引用,它是駐留函數,它是父作用域,它是嵌套作用域,哪個是嵌套函數。 – Oriol
我想最接近的術語「函數嵌套和閉包」是高階函數。這些函數返回(並生成)其他函數http://eloquentjavascript.net/05_higher_order.html根據返回的嵌套/自引用數據嵌套很可能會造成一團糟。 – lipp
@Oriol,我更新了我的問題,我想要做的是從嵌套函數'nested'中調用函數'sibling'。但是,我嘗試了兩種不同的方式來傳遞函數的引用,但都沒有成功。 – user2912840