2017-01-01 21 views
-1

これまではこの機能を使用していましたが、何らかの理由でそれが機能していないため、以下のエラーが発生しています。私はなぜ、それはおそらく明らかに私が見ていない間違っているか分からない。外部の他の関数内で関数を呼び出す

TypeError: (intermediate value).inside is not a function 

発信者が呼び出され、特に内側の実行に関する賢明外の機能なしの残りの部分を残して一人で実行するために内部の機能を対象とし、新たな外部の関数を実行しています。

function caller() { 
new outside().inside(); 
} 


(function outside() { 
function inside() {...} 
})(); 

caller(); 

は、自己起動機能がありますが、それでも可能ではないと思います。

+0

このコードは、働いていることができません。また、 'outside'はあなたのスニペットでも定義されていません。 – melpomene

答えて

1

別の関数内で宣言された関数は、その関数の範囲内のローカル変数を作成し、それが機能の戻り値にプロパティを作成しません。

後者が必要な場合は、明示的に作成する必要があります。

また、newキーワードを使用しているため、そのコンストラクタ関数の名前には大文字の頭文字を付ける必要があります。

function caller() { 
 
    new Outside().inside(); 
 
} 
 

 

 
function Outside() { 
 
    function inside() { 
 
    console.log("Inside"); 
 
    } 
 

 
    this.inside = inside; 
 
} 
 

 
caller();

+0

また、 'inside'が' Outside'のローカル変数を参照しない場合、 'Outside.prototype'で関数を定義する方が効率的です – 4castle

+0

ありがとう。それはうまくいった。 – Fearcustard

関連する問題