internal Closure(FunctionObject func, Object declaringObject)
: base(func.GetParent(), func.name, func.GetNumberOfFormalParameters()) {
this.func = func;
this.engine = func.engine;
this.proto = new JSPrototypeObject(((ScriptObject)func.proto).GetParent(), this);
this.enclosing_scope = this.engine.ScriptObjectStackTop();
this.arguments = DBNull.Value;
this.caller = DBNull.Value;
this.declaringObject = declaringObject;
this.noExpando = func.noExpando;
if (func.isExpandoMethod){
StackFrame sf = new StackFrame(new WithObject(this.enclosing_scope, declaringObject), new JSLocalField[0], new Object[0], null);
this.enclosing_scope = sf;
sf.closureInstance = declaringObject;
}
}