实例/静态变量的JavaScript框架?

时间:2013-11-02 01:41:14

标签: javascript

这是我使用的当前方法,其中所有内容都是公共的或私有的。但是,我想区分静态和实例。我该如何添加?

obj保存类或对象,config_module确定这是什么类型的模块。

所有私有,所有公共(静态集合)或基于构造方法的实例。

如果我确实使用基于实例的,我如何区分静态和基于实例的属性?

   $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;
        }
    };

1 个答案:

答案 0 :(得分:1)

您可以通过向构造函数添加属性来获取(伪)静态内容:

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

如果我理解您的代码,则与object_public[key] = val;相同。