繁体   English   中英

回调的持久性| 对象属性与函数参数

[英]Persistence with Callbacks | Object Properties vs. Function Parameters

我注意到我在代码中一直在使用-可以互换和随机使用。 特别是,当我有一个回调并且函数被“回调”时,我需要一个值来保留。 使用传递的参数还是静态参数都重要吗? 静态是指函数对象的属性。 我在用这个词。 这是我正在处理的示例。

    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用作静态变量。 不要认为这是相关的,只是反思。

我如何才能更加一致? 选择哪一个有关系吗?

仅供参考,此代码只是对一个盒子进行动画处理,将其向下移动,暂停并向上移动。

现在先介绍简单的参数,以便将初始化移到初始函数调用中。

结果代码:

    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';
    }
},

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM