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; } }
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; } }