每当我需要一个静态变量时,我最终都会将它作为属性添加到使用它的对象上,并需要它持久化。

特别是,这里的索引(MT.MAOrb.startR.index)我必须是静态的或保持其值,直到该函数被回调再次调用为止。

使用此表格是执行此操作的最佳方法吗?

MT.MAOrb.startR.index

/**
 ** MAOrb
 */


MT.MAOrb =
{
    pre : function() {
        var o_p = {
            model : 'MAOrb'
            };
        return o_p;
    },
    post : function( o_p ) {
        MT.MAOrb.startR( o_p );
    },
    startR: function( o_p ){
        var sky = document.getElementById( 'Ab1' );
        if( MT.MAOrb.startR.index === undefined ) {
            var size = Object.size( o_p );
            console.log( 'size' + size );
            var index1 = MT.MAOrb.random( 0, size - 1 );
            console.log( 'index1' + index1 );
            MT.MAOrb.startR.index = index1;
            MT.MAOrb.startR.o_p = o_p;
        }else{
            MT.MAOrb.startR.index++;
        }
        var image_element = MT.MAOrb.makeElement( MT.MAOrb.startR.o_p[ MT.MAOrb.startR.index ] );
        sky.appendChild( image_element );
        MT.MAOrb.moveLinear( image_element );
    },// ....more code here
};

最佳答案

如果您要模拟一个公共静态属性,那么这完全是可以的。

JavaScript不是经典的面向对象语言。这是典型的。

一个后果是,语言中确实没有静态的概念。

只要您不介意另一个对象可以直接读取和修改该属性,那么这样做的方式就很好。

10-06 07:52