2013-11-02 6 views
0

Вот текущий метод, который я использую, где все либо является общедоступным, либо частным. Однако я хотел бы различать статику и экземпляр. Как я могу добавить это?JavaScript Framework для экземпляра/статические переменные?

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

Вы можете иметь (псевдо) статический материал, добавляя свойства конструктора:

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

Если я понимаю ваш код, это то же самое, как object_public[key] = val;.

+0

ну ... если я добавлю вещи к прототипу, они тоже «статичны». То есть есть только один за «класс». Как насчет переменных на основе экземпляра, мне нужно использовать 'this'? –

+0

Хорошая мысль о прототипе; в этом случае у вас будут доступные методы для всех экземпляров, но это может сбивать с толку, потому что эти методы будут иметь доступ к 'this' (что означает каждый отдельный экземпляр). Это то, что вы спрашиваете о переменных на основе экземпляров? – bfavaretto

+0

Правильно, у прототипа есть доступ к экземпляру на основе этих переменных ... и да, о чем я прошу. –

Смежные вопросы