]> Lady’s Gitweb - Pisces/blobdiff - function.js
Add buffer getters and setters to binary.js
[Pisces] / function.js
index 46cab860fb27e655a44fba66d211b253758637da..5f397a92d2708331cddc63bef2b82d0cdc72eb68 100644 (file)
@@ -1,19 +1,21 @@
 // ♓🌟 Piscēs ∷ function.js
 // ====================================================================
 //
-// Copyright © 2022 Lady [@ Lady’s Computer].
+// Copyright © 2022‐2023 Lady [@ Lady’s Computer].
 //
 // 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 <https://mozilla.org/MPL/2.0/>.
 
+import { ITERATOR } from "./value.js";
+
 export const {
   /**
    * Creates a bound function from the provided function using the
    * provided this value and arguments list.
    *
-   * ☡ As with call and construct, the arguments must be passed as an
-   * array.
+   * ☡ As with `call` and `construct`, the arguments must be passed as
+   * an array.
    */
   bind,
 
@@ -22,7 +24,7 @@ export const {
    * first argument as the `this` value and the remaining arguments
    * passed through.
    *
-   * ※ This is effectively an alias for Function.prototype.call.bind.
+   * ※ This is effectively an alias for `Function::call.bind`.
    */
   makeCallable,
 } = (() => {
@@ -40,13 +42,12 @@ export const {
     defineProperty: defineOwnProperty,
     getPrototypeOf: getPrototype,
   } = Object;
-  const { iterator: iteratorSymbol } = Symbol;
-  const { [iteratorSymbol]: arrayIterator } = Array.prototype;
+  const { [ITERATOR]: arrayIterator } = Array.prototype;
   const {
     next: arrayIteratorNext,
-  } = getPrototype([][iteratorSymbol]());
+  } = getPrototype([][ITERATOR]());
   const argumentIterablePrototype = {
-    [iteratorSymbol]() {
+    [ITERATOR]() {
       return {
         next: callBind(
           arrayIteratorNext,
@@ -74,23 +75,25 @@ export const {
   };
 })();
 
-/**
- * Calls the provided function with the provided this value and
- * arguments list.
- *
- * ☡ This is an alias for Reflect.apply—the arguments must be passed
- * as an array.
- */
-export const call = Reflect.apply;
+export const {
+  /**
+   * Calls the provided function with the provided this value and
+   * arguments list.
+   *
+   * ☡ This is an alias for `Reflect.apply`—the arguments must be
+   * passed as an arraylike.
+   */
+  apply: call,
 
-/**
- * Constructs the provided function with the provided arguments list
- * and new target.
- *
- * ☡ This is an alias for Reflect.construct—the arguments must be
- * passed as an array.
- */
-export const construct = Reflect.construct;
+  /**
+   * Constructs the provided function with the provided arguments list
+   * and new target.
+   *
+   * ☡ This is an alias for `Reflect.construct`—the arguments must be
+   * passed as an arraylike.
+   */
+  construct,
+} = Reflect;
 
 /**
  * Returns the provided value.
@@ -111,13 +114,17 @@ export const isCallable = ($) => typeof $ === "function";
 export const isConstructor = ($) => {
   // The provided value is an object.
   try {
+    // Try constructing a new object with the provided value as its
+    // `new.target`. This will throw if the provided value is not a
+    // constructor.
     construct(
       function () {},
       [],
       $,
-    ); // will throw if $ is not a constructor
+    );
     return true;
   } catch {
+    // The provided value was not a constructor.
     return false;
   }
 };
This page took 0.021588 seconds and 4 git commands to generate.