javascript 関数オブジェクトの内部関数へのアクセス(私的整理)


JSの関数オブジェクトは色々と生成方法があって、生成方法にって中身が異なったりするよう。すごく迷うところに感じる。

以下はちょっと自分的な迷いどころで、内部関数に関して自分用に整理してみた。

関数の生成 内部関数inn()へのアクセス 呼び出し 備考
sam=function( ){inn=function( ){ }}; 不可 - クロージャー
function sam( ){inn=function( ){ }} 不可 - クロージャー
sam=function( ){inn=function( ){ };return inn;}; sam( )( ); 直接inn( )は呼べないが、returnで戻せばOK
function sam( ){inn=function( ){ };return inn;} sam( )( ); 上に同じ
function sam( ){this.inn=function( ){ }} new sam( ).inn( );
sam={inn:function( ){ }}; sam.fun( ) innは関数ではなくパラメータ
(クロージャーにならない)

sam=function( ){inn.function( ){ }}には、constructorはなく、インスタンス化できないので、new sam( ).inn( );のようにはできない。