Alex Rivera | Logout

JavaScript pass scope to another function

Asked 2011-06-14T19:20:18.057
40

Is it possible to somehow pass the scope of a function to another?

For example,

function a(){
   var x = 5;
   var obj = {..};
   b(<my-scope>);
}

function b(){
   //access x or obj....
}

I would rather access the variables directly, i.e., not using anything like this.a or this.obj, but just use x or obj directly.

Edit
Report

2 Answers

6

No.

You're accessing the local scope object. The [[Context]].

You cannot publicly access it.

Now since it's node.js you should be able to write a C++ plugin that gives you access to the [[Context]] object. I highly recommend against this as it brings proprietary extensions to the JavaScript language.

answered 2011-06-14T19:33:35.877
-2

Have you tried something like this:

function a(){
   var x = 5;
   var obj = {..};
   b(this);
}
function b(fnA){
   //access x or obj....
   fnA.obj = 6;
}

If you can stand function B as a method function A then do this:

function a(){
   var x = 5;
   var obj = {..};
   b(this);

   this.b = function (){
      // "this" keyword is still === function a
   }
}
answered 2011-06-14T19:44:08.210

Your Answer