How Can I Add An Object Property To The Global Object In Rhino Javascript
Solution 1:
I found a rather brilliant solution at NCZOnline:
functiongetGlobal(){
return (function(){
returnthis;
}).call(null);
}
The key to this function is that the this object always points to the global object anytime you are using
call()
orapply()
and pass in null as the first argument. Since a null scope is not valid, the interpreter inserts the global object. The function uses an inner function to assure that the scope is always correct.
Call using:
var glob = getGlobal();
glob
will then return [object global]
in Rhino.
Solution 2:
You could use this
, which refers to the global object if the current function is not called as a method of an object.
Solution 3:
Here's how I've done it in the past:
// Rhino setupContextjsContext= Context.enter();
ScriptableglobalScope= jsContext.initStandardObjects();
// Define global variableObjectglobalVarValue="my value";
globalScope.put("globalVarName", globalScope, globalVarValue);
Solution 4:
You could just define your own window
object as a top-level variable:
varwindow = {};
You can then assign values to it as you please. ("window
" probably isn't the best variable name in this situation, though.)
See also: Can I create a 'window' object for javascript running in the Java6 Rhino Script Engine
Solution 5:
I've not used rhino but couldn't you just use var?
i.e.
var foo = myObject.foo;
foo();
Edit: Damn knew there'd be a catch! Miles' suggestion would be the go in that case.
Post a Comment for "How Can I Add An Object Property To The Global Object In Rhino Javascript"