0

これが私が使用している現在の方法で、すべてがすべて公開または非公開のいずれかです。ただし、静的とインスタンスを区別したいと思います。これをどのように追加しますか?

objクラスまたはオブジェクトを保持し、 config_module はこれがどのタイプのモジュールであるかを決定します。

すべてプライベート、すべてパブリック ( statics のコレクション)、またはコンストラクター メソッドに基づくインスタンス。

インスタンス ベースを使用する場合、静的とインスタンス ベースのプロパティをどのように区別すればよいですか?

   $P.support = $P.parsel = function (obj, config_module) {
        $R.Parsel[obj.Name] = obj;

        // all properties are private

        if (!config_module) {
            return undefined;
        }

        // all properties are public

        if (config_module === true) {
            return obj;
        }

        // constructor based, all properties are public

        if (config_module === 'constructor') {
            var object_public;
            if (obj.constructor) {
                object_public = obj.constructor;
                delete obj.constructor;
            }
            $A.someKey(obj, function (val, key) {

                // like this ?

                if (/^s_/.test(key)) {
                    object_public[key] = val;

                // like this ?

                } else if (/^p_/.test(key)) {
                    object_public.prototype[key] = val;
                } else {
                    object_public.prototype[key] = val;
                }

            });
            return object_public;
        }
    };
4

1 に答える 1

1

コンストラクターにプロパティを追加することで、(疑似) 静的なものを使用できます。

function Something(){}
Something.getStaticFoo = function(){ return 'foo'; }
Something.getStaticFoo();
var instance = new Something();
instance.getStaticFoo(); // error

あなたのコードを理解できれば、それは と同じobject_public[key] = val;です。

于 2013-11-02T02:01:40.540 に答える