ham_mer | Voila, je travaille avec le framework Dojo pour AJAX et j'aimerais instancier un objet de type Reflex qui permet de récupérer toutes les propriétés d'une classe de dojo.
Seulement je n'arrive pas a me servir de cette classe.
Il est marqué en commentaire qu'elle ne peut etre instanciée :
//Static object that can activate instances of the passed type.
alors j'essaye de faire comme ceci :
dojo.reflect.Reflector.getPropertiesFromType ('FloatingPane');
Pour récupérer les propriétés d'un panel flotant mais ça ne marche pas
Voici le code de la classe :
Code :
- dojo.reflect.Reflector = new (function(){
- this.getTypeFromString = function(s) {
- var parts = s.split("." ), i = 0, obj = dj_global ;
- do { obj = obj[parts[i++]] ; } while (i < parts.length && obj) ;
- return (obj != dj_global) ? obj : null ;
- };
- this.typeExists = function(s) {
- var parts = s.split("." ), i = 0, obj = dj_global ;
- do { obj = obj[parts[i++]] ; } while (i < parts.length && obj) ;
- return (obj && obj != dj_global) ;
- };
- this.getFieldsFromType = function(s) {
- var type = s ;
- if (typeof(s) == "string" ) {
- type = this.getTypeFromString(s) ;
- }
- var nullArgs = (new dojo.reflect.MethodInfo(type)).getNullArgumentsObject() ;
- return this.getFields(dojo.reflect.Activator.createInstance(s, nullArgs)) ;
- };
- this.getPropertiesFromType = function(s) {
- var type = s ;
- if (typeof(s) == "string" ) {
- type = this.getTypeFromString(s);
- }
- var nullArgs = (new dojo.reflect.MethodInfo(type)).getNullArgumentsObject() ;
- return this.getProperties(dojo.reflect.Activator.createInstance(s, nullArgs)) ;
- };
- this.getMethodsFromType = function(s) {
- var type = s ;
- if (typeof(s) == "string" ) {
- type = this.getTypeFromString(s) ;
- }
- var nullArgs = (new dojo.reflect.MethodInfo(type)).getNullArgumentsObject() ;
- return this.getMethods(dojo.reflect.Activator.createInstance(s, nullArgs)) ;
- };
- this.getType = function(o) { return o.constructor ; } ;
- this.getFields = function(obj) {
- var arr = [] ;
- for (var p in obj) {
- if(this.getType(obj[p]) != Function){
- arr.push(new dojo.reflect.PropertyInfo(p, this.getType(obj[p]))) ;
- }else{
- arr.push(new dojo.reflect.MethodInfo(p, obj[p]));
- }
- }
- return arr ;
- };
- this.getProperties = function(obj) {
- var arr = [] ;
- var fi = this.getFields(obj) ;
- for (var i = 0; i < fi.length; i++){
- if (this.isInstanceOf(fi[i], dojo.reflect.PropertyInfo)){
- arr.push(fi[i]) ;
- }
- }
- return arr ;
- };
- this.getMethods = function(obj) {
- var arr = [] ;
- var fi = this.getFields(obj) ;
- for (var i = 0; i < fi.length; i++){
- if (this.isInstanceOf(fi[i], dojo.reflect.MethodInfo)){
- arr.push(fi[i]) ;
- }
- }
- return arr ;
- };
- /*
- this.implements = function(o, type) {
- if (this.isSubTypeOf(o, type)) return false ;
- var f = this.getFieldsFromType(type) ;
- for (var i = 0; i < f.length; i++) {
- if (typeof(o[(f[i].name)]) == "undefined" ){
- return false;
- }
- }
- return true ;
- };
- */
- this.getBaseClass = function(o) {
- if (o.getType().prototype.prototype.constructor){
- return (o.getType()).prototype.prototype.constructor ;
- }
- return Object ;
- } ;
- this.isInstanceOf = function(o, type) {
- return (this.getType(o) == type) ;
- };
- this.isSubTypeOf = function(o, type) {
- return (o instanceof type) ;
- };
- this.isBaseTypeOf = function(o, type) {
- return (type instanceof o);
- };
- })();
|
|