この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
60. `new` を実装する
function myNew(Constructor, ...args) {
// Constructorのprototypeを新しいオブジェクトの__proto__に設定する
let newObj = Object.create(Constructor.prototype);
// Constructorを新しいオブジェクトのコンテキストで呼び出し、戻り値を取得する
let returnedObj = Constructor.apply(newObj, args);
// コンストラクタがObject以外のオブジェクトを返した場合はそれを返す
if (returnedObj && (typeof returnedObj === "object" || typeof returnedObj === "function")) {
return returnedObj;
}
// それ以外は新しいオブジェクトを返す
return newObj;
}
myNew()
は、渡されたConstructor関数を新しいオブジェクトのコンテキストで呼び出し、その戻り値がオブジェクトであればその戻り値を返します。そうでなければ、新しいオブジェクトを返します。また、新しいオブジェクトの__proto__プロパティはConstructorのprototypeオブジェクトを参照します。