这是基本轮廓
function x(){
// some code
function y(){
//some more code
}
}
function z(){
// how do i call function y?
}
I tried
function z(){
window[x][y];
}
and
function z(){
x();y();
}
都不起作用!
代码很多,不多解释。
function x(){
// some code
function y(){
//some more code
}
}
上述声明y inside x,因此它被创建为x每次的变量对象x叫做。y只能从内部访问x除非里面有代码x使其可以从其他地方获得。
function z(){
// how do i call function y?
}
To call y从内部z,它必须可以在z的作用域链。这可以通过将其传递到函数调用中来完成(使其成为z的变量对象)或使其成为某个对象的属性z的作用域链。
如果该函数可供两个函数使用,则在两个函数都可以访问该函数的地方声明它是有意义的x and z,或初始化z以这样的方式y可用。例如
var z;
var x = (function() {
function y(){}
z = function() {
// something that calls y;
};
return function() {
// x function body
}
}());
在上文中,x and z两者都可以访问相同的y函数并且不是每次都创建x叫做。注意z将是未定义的,直到代码分配给x被执行。
另请注意y is only有空x and z,它不能被任何其他函数访问(所以y可能被称为private功能和x and z可能会被称为特权功能)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)