public override JsInstance Execute( IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters) { JsFunction function = that as JsFunction; if (function == null) { throw new ArgumentException("the target of call() must be a function"); } JsDictionaryObject _this = parameters.Length < 1 || parameters[0] == JsUndefined.Instance || parameters[0] == JsNull.Instance ? visitor.Global as JsDictionaryObject : parameters[0] as JsDictionaryObject; JsInstance[] _parameters; if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) { _parameters = new JsInstance[parameters.Length - 1]; for (int index = 1; index < parameters.Length; ++index) { _parameters[index - 1] = parameters[index]; } } else { _parameters = JsInstance.EMPTY; } visitor.ExecuteFunction(function, _this, _parameters); return(visitor.Result); }
public override JsInstance Execute( IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters) { JsFunction function = that as JsFunction; if (function == null) { throw new ArgumentException("the target of call() must be a function"); } JsDictionaryObject _this = parameters.Length < 1 || parameters[0] == JsUndefined.Instance || parameters[0] == JsNull.Instance ? visitor.Global as JsDictionaryObject : parameters[0] as JsDictionaryObject; JsInstance[] _parameters; if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) { JsObject parameter = parameters[1] as JsObject; if (parameter == null) { throw new JsException((JsInstance)visitor.Global.TypeErrorClass.New("second argument must be an array")); } _parameters = new JsInstance[parameter.Length]; for (int index = 0; index < parameter.Length; ++index) { _parameters[index] = parameter[index.ToString()]; } } else { _parameters = JsInstance.EMPTY; } visitor.ExecuteFunction(function, _this, _parameters); return(visitor.Result); }
public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters) { JsFunction function = that as JsFunction; if (function == null) { throw new ArgumentException("the target of call() must be a function"); } JsDictionaryObject _this; JsInstance[] _parameters; if (parameters.Length >= 1 && parameters[0] != JsUndefined.Instance && parameters[0] != JsNull.Instance) _this = parameters[0] as JsDictionaryObject; else _this = visitor.Global as JsDictionaryObject; if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) { _parameters = new JsInstance[parameters.Length - 1]; for (int i = 1; i < parameters.Length; i++) { _parameters[i - 1] = parameters[i]; } } else { _parameters = JsInstance.EMPTY; } // Executes the statements in 'that' and use _this as the target of the call visitor.ExecuteFunction(function, _this, _parameters); return visitor.Result; //visitor.CallFunction(function, _this, _parameters); //return visitor.Result; }
public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters) { JsFunction function = that as JsFunction; if (function == null) { throw new ArgumentException("the target of call() must be a function"); } JsDictionaryObject _this; JsInstance[] _parameters; if (parameters.Length >= 1) _this = parameters[0] as JsDictionaryObject; else _this = visitor.Global as JsDictionaryObject; if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) { JsObject arguments = parameters[1] as JsObject; if (arguments == null) throw new JsException(visitor.Global.TypeErrorClass.New("second argument must be an array")); _parameters = new JsInstance[arguments.Length]; for (int i = 0; i < arguments.Length; i++) { _parameters[i] = arguments[i.ToString()]; } } else { _parameters = JsInstance.EMPTY; } // Executes the statements in 'that' and use _this as the target of the call visitor.ExecuteFunction(function, _this, _parameters); return visitor.Result; //visitor.CallFunction(function, _this, _parameters); //return visitor.Result; }
//13.2.2 public virtual JsObject Construct(JsInstance[] parameters, Type[] genericArgs, IJintVisitor visitor) { var instance = visitor.Global.ObjectClass.New(PrototypeProperty); visitor.ExecuteFunction(this, instance, parameters); return(visitor.Result as JsObject ?? instance); }
public override object Call( IJintVisitor visitor, string function, params JsInstance[] parameters) { visitor.ExecuteFunction(this[function] as JsFunction, this, parameters); return((object)visitor.Returned); }
public virtual JsObject Construct( JsInstance[] parameters, Type[] genericArgs, IJintVisitor visitor) { JsObject jsObject = visitor.Global.ObjectClass.New(this.PrototypeProperty); visitor.ExecuteFunction(this, (JsDictionaryObject)jsObject, parameters); return(visitor.Result as JsObject ?? jsObject); }
public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters) { JsFunction function = that as JsFunction; if (function == null) { throw new ArgumentException("the target of call() must be a function"); } JsDictionaryObject _this; JsInstance[] _parameters; if (parameters.Length >= 1 && parameters[0] != JsUndefined.Instance && parameters[0] != JsNull.Instance) { _this = parameters[0] as JsDictionaryObject; } else { _this = visitor.Global as JsDictionaryObject; } if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) { JsObject arguments = parameters[1] as JsObject; if (arguments == null) { throw new JsException(visitor.Global.TypeErrorClass.New("second argument must be an array")); } _parameters = new JsInstance[arguments.Length]; for (int i = 0; i < arguments.Length; i++) { _parameters[i] = arguments[i.ToString()]; } } else { _parameters = JsInstance.EMPTY; } // Executes the statements in 'that' and use _this as the target of the call visitor.ExecuteFunction(function, _this, _parameters); return(visitor.Result); //visitor.CallFunction(function, _this, _parameters); //return visitor.Result; }
public override JsInstance Execute(IJintVisitor visitor, JsDictionaryObject that, JsInstance[] parameters) { JsFunction function = that as JsFunction; if (function == null) { throw new ArgumentException("the target of call() must be a function"); } JsDictionaryObject _this; JsInstance[] _parameters; if (parameters.Length >= 1 && parameters[0] != JsUndefined.Instance && parameters[0] != JsNull.Instance) { _this = parameters[0] as JsDictionaryObject; } else { _this = visitor.Global as JsDictionaryObject; } if (parameters.Length >= 2 && parameters[1] != JsNull.Instance) { _parameters = new JsInstance[parameters.Length - 1]; for (int i = 1; i < parameters.Length; i++) { _parameters[i - 1] = parameters[i]; } } else { _parameters = JsInstance.EMPTY; } // Executes the statements in 'that' and use _this as the target of the call visitor.ExecuteFunction(function, _this, _parameters); return(visitor.Result); //visitor.CallFunction(function, _this, _parameters); //return visitor.Result; }
public void ExecuteStandalone(IJintVisitor visitor, params object[] parameters) { JsInstance[] jsPrameters = JsClr.ConvertParametersBack(visitor, parameters); visitor.ExecuteFunction(this, null, jsPrameters); }
public void ExecuteCallback(IJintVisitor visitor, object state, object args) { JsInstance[] jsPrameters = JsClr.ConvertParametersBack(visitor, new[] { state, args }); visitor.ExecuteFunction(this, null, jsPrameters); }
//13.2.2 public virtual JsObject Construct(JsInstance[] parameters, Type[] genericArgs, IJintVisitor visitor) { var instance = visitor.Global.ObjectClass.New(PrototypeProperty); visitor.ExecuteFunction(this, instance, parameters); return (visitor.Result as JsObject ?? instance); }