예제 #1
0
static void
debug_arr(FILE *stream, js_val *arr, int indent)
{
  if (arr->object.length == 0) {
    fprintf(stream, "[]");
    return;
  }
  fprintf(stream, "[ ");

  bool first = true;
  js_prop *prop;
  unsigned long i;

  for (i = 0; i < arr->object.length; i++) {
    prop = fh_get_prop(arr, JSNUMKEY(i)->string.ptr);

    if (!first) 
      fprintf(stream, ", ");
    else
      first = false;

    if (!prop) continue;

    if (prop->circular)
      cfprintf(stream, ANSI_BLUE, "[Circular]");
    else
      fh_debug(stream, prop->ptr, 0, false);
  }

  fprintf(stream, " ]");
}
예제 #2
0
// Function.prototype.apply(thisValue[, argsArray])
js_val *
func_proto_apply(js_val *instance, js_args *args, eval_state *state)
{
  js_val *this = ARG(args, 0);
  js_val *arr = ARG(args, 1);

  js_args *func_args = args_new();

  unsigned long i;
  for (i = 0; i < arr->object.length; i++)
    args_append(func_args, fh_get(arr, JSNUMKEY(i)->string.ptr));

  return fh_call(state->ctx, this, instance, func_args);
}