この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - JavaScript コーディング問題
61. `Function.prototype.call`を実装する

function myCall(fn, thisArg, ...args) {  // fnが関数かどうかを確認する  if (typeof fn !== "function") {    throw new TypeError("not a function");  }  // thisArgがundefinedまたはnullの場合、グローバルオブジェクトをthisに設定する  thisArg = thisArg || globalThis;  // thisArgにfnを加えたプロパティを作成する  const key = Symbol();  thisArg[key] = fn;  // 関数を実行して、戻り値を保存する  const result = thisArg[key](...args);  // thisArgからfnを削除する  delete thisArg[key];  // 戻り値を返す  return result;}

解説:

  1. 引数として与えられたfnが関数であるかどうかを確認します。もしそうでなければ、TypeErrorをスローします。
  2. thisArg引数をチェックします。undefinedまたはnullの場合、グローバルオブジェクトをthisに設定します。
  3. Symbol()を使ってthisArgオブジェクトにfnを設定します。
  4. レストパラメータ(...args)を使って、残りの引数をfnに渡します。
  5. 関数を実行し、結果をresultに保存します。
  6. delete演算子を使って、fnをthisArgオブジェクトから削除します。
  7. 結果を返します。