0

私は JavaScript プログラミングの初心者です。理解を深めるのに役立つ IIFE を書きました。私の意図は、呼び出されたときに自分自身をコンストラクターとして呼び出す $ 関数を定義することです。コードを実行すると、「再帰が多すぎます」というエラーが生成されます。何が問題なのかわからない。

(function() {
//check the global host object
var root = this;

var inside = "inside";

var $ = function () {
    return new $(); //this line generates an error 'Too much recursion.'
}

$.check = function(obj) {
    console.log(inside);
}

//add the $ to global object
root.$ = $;
}).call(this);

var ins = $();

console.log(ins);
4

3 に答える 3

0

それは、無限ループを作成したためです。新しい var インスタンスを返すときに括弧を使用すると、パラメーターなしでその関数を再帰的に呼び出します。何を達成しようとしているのかはわかりませんが、代わりに $ で新しいオブジェクト "{}" を作成し、その参照からメソッドを拡張することができます。何かの新しいインスタンスを作成できるようにするシングルトンパターンを調べてください。

*編集、あなたの問題がIIFEであることとは何の関係もないことを明確にするために、この方法で新しい関数を呼び出そうとした場所で同じエラーが発生します。

于 2013-09-22T15:44:05.940 に答える