// Perform a constructor call on this object. internal override Object Construct(VsaEngine engine, Object[] args) { String parameters; String body; String defn; int index; JSParser parser; JFunction func; // Collect up the parameters and body. if (args.Length == 0) { parameters = String.Empty; body = String.Empty; } else if (args.Length == 1) { parameters = String.Empty; body = Convert.ToString(args[0]); } else { parameters = Convert.ToString(args[0]); for (index = 1; index < (args.Length - 1); ++index) { parameters = String.Concat(parameters, ",", Convert.ToString(args[index])); } body = Convert.ToString(args[args.Length - 1]); } // Build a complete function definition and parse it. defn = "function (" + parameters + ") { " + body + " }"; parser = new JSParser(new Context(defn)); func = parser.ParseFunctionSource(); // Build the function object and return it. return(new FunctionObject (EngineInstance.GetEngineInstance(engine) .GetFunctionPrototype(), func, engine.GetMainScope())); }
// Perform a constructor call on this object. internal override Object Construct(VsaEngine engine, Object[] args) { String parameters; String body; String defn; int index; JSParser parser; JFunction func; // Collect up the parameters and body. if(args.Length == 0) { parameters = String.Empty; body = String.Empty; } else if(args.Length == 1) { parameters = String.Empty; body = Convert.ToString(args[0]); } else { parameters = Convert.ToString(args[0]); for(index = 1; index < (args.Length - 1); ++index) { parameters = String.Concat(parameters, ",", Convert.ToString(args[index])); } body = Convert.ToString(args[args.Length - 1]); } // Build a complete function definition and parse it. defn = "function (" + parameters + ") { " + body + " }"; parser = new JSParser(new Context(defn)); func = parser.ParseFunctionSource(); // Build the function object and return it. return new FunctionObject (EngineInstance.GetEngineInstance(engine) .GetFunctionPrototype(), func, engine.GetMainScope()); }