Javascript 从回调范围访问变量

Javascript 从回调范围访问变量,javascript,node.js,security,Javascript,Node.js,Security,我正在NodeJS中进行web服务器开发,其中请求处理程序如下所示: function handler(request, response, give){ var dbInstance = give("db instance"); //.. } 这就是处理程序的调用方式 routesManager.prototype.register = function( httpMethod, url, handler ){ this.router.on( httpMethod, url,

我正在NodeJS中进行web服务器开发,其中请求处理程序如下所示:

function handler(request, response, give){
 var dbInstance = give("db instance");
 //..
}
这就是处理程序的调用方式

routesManager.prototype.register = function( httpMethod, url, handler ){

    this.router.on( httpMethod, url, async ( request, response, params ) => {
        var store  = this.store;            
        handler(request, response, function (str) {
            return store.get(str);
        });
    });
}    

因此,可以通过回调访问存储。也可以从处理程序访问它吗?我想保护它不被任何直接使用。

存储可通过闭包访问处理程序回调。只要处理程序未定义在与存储相同的作用域中,则处理程序本身就无法访问它。所以,放松点:)


将store传递给handler的唯一方法是将handler绑定到当前代码中调用的上下文中的this,然后调用handler。

store可通过闭包访问handler callback。只要处理程序未定义在与存储相同的作用域中,则处理程序本身就无法访问它。所以,放松点:)


将store传递给handler的唯一方法是将handler绑定到当前在代码中调用的上下文中的this,然后调用handler。

在哪里初始化
store
?你能提供更广泛的代码示例吗?尝试添加更多代码。希望它会更清楚。您在哪里初始化
存储
?你能提供更广泛的代码示例吗?尝试添加更多代码。希望它会更清楚。谢谢。当我在某个地方读到,在javascript中,您可以访问所有内容,我想知道如何对handlergrt隐藏存储。谢谢。当我在某个地方读到,在javascript中,您可以访问所有内容时,我想知道如何对处理程序隐藏存储