下面是我使用的当前方法,所有的东西都是公共的或私有的。然而,我想区分静态和实例。我怎么把这个加进去?
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;
}
};发布于 2013-11-02 02:01:40
通过向构造函数添加属性,您可以拥有(伪)静态内容:
function Something(){}
Something.getStaticFoo = function(){ return 'foo'; }
Something.getStaticFoo();
var instance = new Something();
instance.getStaticFoo(); // error如果我理解您的代码,这与object_public[key] = val;是一样的。
https://stackoverflow.com/questions/19738068
复制相似问题