1

私は自分のコードで両方を使用していることに気づきました-交換可能かつランダムに。特に、コールバックがあり、関数が「コールバック」されたときに永続化する値が必要な場合。渡されたパラメーターと静的パラメーターのどちらを使用するかは重要ですか?静的とは、関数オブジェクトのプロパティを意味します。私はこの用語を大まかに使用しています。これが私が取り組んでいる例です。

    message_object.display( type );
    document.getElementById( 'po_but_cov' ).style.display='inline';
    pos = 30;
    MC.MATweet.movePane.dir = 'down';
    MC.MATweet.movePane( pane_element, pos );

    return o_p;
},
movePane: function( pane_element, pos ) {
    if( ( MC.MATweet.movePane.dir === 'down' ) && ( pos < 70 ) ) {
        pos += 1;
        pane_element.style.top = ( pos ) + 'px';
        setTimeout( function( ){ MC.MATweet.movePane( pane_element, pos ); }, 1 );
    }
    else if( ( MC.MATweet.movePane.dir === 'down' ) && pos === 70 ) { 
        MC.MATweet.movePane.dir = 'up';
        setTimeout( function( ){ MC.MATweet.movePane( pane_element, pos ); }, 2000 );
    }
    else if( ( MC.MATweet.movePane.dir === 'up' ) && ( pos > 30 ) ) {
        pos -= 1;
        pane_element.style.top = ( pos ) + 'px';
        setTimeout( function( ){ MC.MATweet.movePane( pane_element, pos ); }, 1 );
    }
    else if( ( MC.MATweet.movePane.dir === 'up' ) && ( pos === 30 ) ) {
        document.getElementById( 'po_but_cov' ).style.display='none';
    }
},

ご覧のとおりpos、私は渡されたパラメーターとして使用MC.MATweet.movePane.dirし、静的パラメーターとして使用しています。設定した時間が経過した後に関数がコールバックされたときに、両方を使用できるようにする必要があります。

コードのスタイルをより一貫性のあるものにしたいと思います。何らかの理由で、さらに変化する値、、をposパラメーターとして渡しMC.MATweet.movePane.dir、静的変数として使用したときに一度だけ変化する値。これが適切であるとは思わないでください。

どうすればもっと一貫性を保つことができますか?どちらを選ぶかは重要ですか?

参考までに、このコードはボックスをアニメートし、ボックスを下に移動し、一時停止してから上に戻します。

4

1 に答える 1

0

今のところ、初期化を最初の関数呼び出しに移すことができるように、ストレートパラメーターを使用しました。

結果のコード:

    message_object.display( type );
    document.getElementById( 'po_but_cov' ).style.display='inline';
    MC.MATweet.movePane( pane_element, 30, 'down' );

    return o_p;
},
movePane: function( pane_element, pos, dir ) {
    if( ( dir === 'down' ) && ( pos < 70 ) ) {
        pos += 1;
        pane_element.style.top = ( pos ) + 'px';
        setTimeout( function( ){ MC.MATweet.movePane( pane_element, pos, dir ); }, 1 );
    }
    else if( ( dir === 'down' ) && pos === 70 ) { 
        dir = 'up';
        setTimeout( function( ){ MC.MATweet.movePane( pane_element, pos, dir ); }, 2000 );
    }
    else if( ( dir === 'up' ) && ( pos > 30 ) ) {
        pos -= 1;
        pane_element.style.top = ( pos ) + 'px';
        setTimeout( function( ){ MC.MATweet.movePane( pane_element, pos, dir ); }, 1 );
    }
    else if( ( dir === 'up' ) && ( pos === 30 ) ) {
        document.getElementById( 'po_but_cov' ).style.display='none';
    }
},
于 2012-08-01T21:56:39.410 に答える