Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/src/builtin/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 5 kB image not shown  

Quelle  Reflect.js   Sprache: JAVA

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


// ES2017 draft rev a785b0832b071f505a694e1946182adeab84c972
// 7.3.17 CreateListFromArrayLike (obj [ , elementTypes ] )
function CreateListFromArrayLikeForArgs(obj) {
  // Step 1 (not applicable).

  // Step 2.
  assert(
    IsObject(obj),
    "object must be passed to CreateListFromArrayLikeForArgs"
  );

  // Step 3.
  var len = ToLength(obj.length);

  // This version of CreateListFromArrayLike is only used for argument lists.
  if (len > MAX_ARGS_LENGTH) {
    ThrowRangeError(JSMSG_TOO_MANY_ARGUMENTS);
  }

  // Steps 4-6.
  var list = std_Array(len);
  for (var i = 0; i < len; i++) {
    DefineDataProperty(list, i, obj[i]);
  }

  // Step 7.
  return list;
}

// ES2017 draft rev a785b0832b071f505a694e1946182adeab84c972
// 26.1.1 Reflect.apply ( target, thisArgument, argumentsList )
function Reflect_apply(target, thisArgument, argumentsList) {
  // Step 1.
  if (!IsCallable(target)) {
    ThrowTypeError(JSMSG_NOT_FUNCTION, DecompileArg(0, target));
  }

  // Step 2.
  if (!IsObject(argumentsList)) {
    ThrowTypeError(
      JSMSG_OBJECT_REQUIRED_ARG,
      "`argumentsList`",
      "Reflect.apply",
      ToSource(argumentsList)
    );
  }

  // Steps 2-4.
  return callFunction(std_Function_apply, target, thisArgument, argumentsList);
}
// This function is only barely too long for normal inlining.
SetIsInlinableLargeFunction(Reflect_apply);

// ES2017 draft rev a785b0832b071f505a694e1946182adeab84c972
// 26.1.2 Reflect.construct ( target, argumentsList [ , newTarget ] )
function Reflect_construct(target, argumentsList /*, newTarget*/) {
  // Step 1.
  if (!IsConstructor(target)) {
    ThrowTypeError(JSMSG_NOT_CONSTRUCTOR, DecompileArg(0, target));
  }

  // Steps 2-3.
  var newTarget;
  if (ArgumentsLength() > 2) {
    newTarget = GetArgument(2);
    if (!IsConstructor(newTarget)) {
      ThrowTypeError(JSMSG_NOT_CONSTRUCTOR, DecompileArg(2, newTarget));
    }
  } else {
    newTarget = target;
  }

  // Step 4.
  if (!IsObject(argumentsList)) {
    ThrowTypeError(
      JSMSG_OBJECT_REQUIRED_ARG,
      "`argumentsList`",
      "Reflect.construct",
      ToSource(argumentsList)
    );
  }

  // Fast path when we can avoid calling CreateListFromArrayLikeForArgs().
  var args =
    IsPackedArray(argumentsList) && argumentsList.length <= MAX_ARGS_LENGTH
      ? argumentsList
      : CreateListFromArrayLikeForArgs(argumentsList);

  // Step 5.
  switch (args.length) {
    case 0:
      return constructContentFunction(target, newTarget);
    case 1:
      return constructContentFunction(target, newTarget, SPREAD(args, 1));
    case 2:
      return constructContentFunction(target, newTarget, SPREAD(args, 2));
    case 3:
      return constructContentFunction(target, newTarget, SPREAD(args, 3));
    case 4:
      return constructContentFunction(target, newTarget, SPREAD(args, 4));
    case 5:
      return constructContentFunction(target, newTarget, SPREAD(args, 5));
    case 6:
      return constructContentFunction(target, newTarget, SPREAD(args, 6));
    case 7:
      return constructContentFunction(target, newTarget, SPREAD(args, 7));
    case 8:
      return constructContentFunction(target, newTarget, SPREAD(args, 8));
    case 9:
      return constructContentFunction(target, newTarget, SPREAD(args, 9));
    case 10:
      return constructContentFunction(target, newTarget, SPREAD(args, 10));
    case 11:
      return constructContentFunction(target, newTarget, SPREAD(args, 11));
    case 12:
      return constructContentFunction(target, newTarget, SPREAD(args, 12));
    default:
      return ConstructFunction(target, newTarget, args);
  }
}

// ES2017 draft rev 6859bb9ccaea9c6ede81d71e5320e3833b92cb3e
// 26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )
function Reflect_defineProperty(obj, propertyKey, attributes) {
  // Steps 1-4.
  return ObjectOrReflectDefineProperty(obj, propertyKey, attributes, false);
}

// ES2017 draft rev 6859bb9ccaea9c6ede81d71e5320e3833b92cb3e
// 26.1.6 Reflect.getOwnPropertyDescriptor ( target, propertyKey )
function Reflect_getOwnPropertyDescriptor(target, propertyKey) {
  // Step 1.
  if (!IsObject(target)) {
    ThrowTypeError(JSMSG_OBJECT_REQUIRED, DecompileArg(0, target));
  }

  // Steps 2-3.
  // The other steps are identical to Object.getOwnPropertyDescriptor().
  return ObjectGetOwnPropertyDescriptor(target, propertyKey);
}

// ES2017 draft rev a785b0832b071f505a694e1946182adeab84c972
// 26.1.8 Reflect.has ( target, propertyKey )
function Reflect_has(target, propertyKey) {
  // Step 1.
  if (!IsObject(target)) {
    ThrowTypeError(
      JSMSG_OBJECT_REQUIRED_ARG,
      "`target`",
      "Reflect.has",
      ToSource(target)
    );
  }

  // Steps 2-3 are identical to the runtime semantics of the "in" operator.
  return propertyKey in target;
}

// ES2018 draft rev 0525bb33861c7f4e9850f8a222c89642947c4b9c
// 26.1.5 Reflect.get ( target, propertyKey [ , receiver ] )
function Reflect_get(target, propertyKey /*, receiver*/) {
  // Step 1.
  if (!IsObject(target)) {
    ThrowTypeError(
      JSMSG_OBJECT_REQUIRED_ARG,
      "`target`",
      "Reflect.get",
      ToSource(target)
    );
  }

  // Step 3 (reordered).
  if (ArgumentsLength() > 2) {
    // Steps 2, 4.
    return getPropertySuper(target, propertyKey, GetArgument(2));
  }

  // Steps 2, 4.
  return target[propertyKey];
}

Messung V0.5
C=84 H=96 G=90

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.