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 回答