[JS] probleme pr instancier une objet

probleme pr instancier une objet [JS] - HTML/CSS - Programmation

Marsh Posté le 09-05-2006 à 11:49:57    

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 :
  1. dojo.reflect.Reflector = new (function(){
  2. this.getTypeFromString = function(s) {
  3.  var parts = s.split("." ), i = 0, obj = dj_global ;
  4.  do { obj = obj[parts[i++]] ; } while (i < parts.length && obj) ;
  5.  return (obj != dj_global) ? obj : null ;
  6. };
  7. this.typeExists = function(s) {
  8.  var parts = s.split("." ), i = 0, obj = dj_global ;
  9.  do { obj = obj[parts[i++]] ; } while (i < parts.length && obj) ;
  10.  return (obj && obj != dj_global) ;
  11. };
  12. this.getFieldsFromType = function(s) {
  13.  var type = s ;
  14.  if (typeof(s) == "string" ) {
  15.   type = this.getTypeFromString(s) ;
  16.  }
  17.  var nullArgs = (new dojo.reflect.MethodInfo(type)).getNullArgumentsObject() ;
  18.  return this.getFields(dojo.reflect.Activator.createInstance(s, nullArgs)) ;
  19. };
  20. this.getPropertiesFromType = function(s) {
  21.  var type = s ;
  22.  if (typeof(s) == "string" ) {
  23.   type = this.getTypeFromString(s);
  24.  }
  25.  var nullArgs = (new dojo.reflect.MethodInfo(type)).getNullArgumentsObject() ;
  26.  return this.getProperties(dojo.reflect.Activator.createInstance(s, nullArgs)) ;
  27. };
  28. this.getMethodsFromType = function(s) {
  29.  var type = s ;
  30.  if (typeof(s) == "string" ) {
  31.   type = this.getTypeFromString(s) ;
  32.  }
  33.  var nullArgs = (new dojo.reflect.MethodInfo(type)).getNullArgumentsObject() ;
  34.  return this.getMethods(dojo.reflect.Activator.createInstance(s, nullArgs)) ;
  35. };
  36. this.getType = function(o) { return o.constructor ; } ;
  37. this.getFields = function(obj) {
  38.  var arr = [] ;
  39.  for (var p in obj) {
  40.   if(this.getType(obj[p]) != Function){
  41.    arr.push(new dojo.reflect.PropertyInfo(p, this.getType(obj[p]))) ;
  42.   }else{
  43.    arr.push(new dojo.reflect.MethodInfo(p, obj[p]));
  44.   }
  45.  }
  46.  return arr ;
  47. };
  48. this.getProperties = function(obj) {
  49.  var arr = [] ;
  50.  var fi = this.getFields(obj) ;
  51.  for (var i = 0; i < fi.length; i++){
  52.   if (this.isInstanceOf(fi[i], dojo.reflect.PropertyInfo)){
  53.    arr.push(fi[i]) ;
  54.   }
  55.  }
  56.  return arr ;
  57. };
  58. this.getMethods = function(obj) {
  59.  var arr = [] ;
  60.  var fi = this.getFields(obj) ;
  61.  for (var i = 0; i < fi.length; i++){
  62.   if (this.isInstanceOf(fi[i], dojo.reflect.MethodInfo)){
  63.    arr.push(fi[i]) ;
  64.   }
  65.  }
  66.  return arr ;
  67. };
  68. /*
  69. this.implements = function(o, type) {
  70.  if (this.isSubTypeOf(o, type)) return false ;
  71.  var f = this.getFieldsFromType(type) ;
  72.  for (var i = 0; i < f.length; i++) {
  73.   if (typeof(o[(f[i].name)]) == "undefined" ){
  74.    return false;
  75.   }
  76.  }
  77.  return true ;
  78. };
  79. */
  80. this.getBaseClass = function(o) {
  81.  if (o.getType().prototype.prototype.constructor){
  82.   return (o.getType()).prototype.prototype.constructor ;
  83.  }
  84.  return Object ;
  85. } ;
  86. this.isInstanceOf = function(o, type) {
  87.  return (this.getType(o) == type) ;
  88. };
  89. this.isSubTypeOf = function(o, type) {
  90.  return (o instanceof type) ;
  91. };
  92. this.isBaseTypeOf = function(o, type) {
  93.  return (type instanceof o);
  94. };
  95. })();


 

Reply

Marsh Posté le 09-05-2006 à 11:49:57   

Reply

Marsh Posté le 09-05-2006 à 17:50:59    

dojo.reflect.Reflector = new (function(){...
 
Apparement ce n'est pas comme ça qu'on déclare on classe, mais je n'arrive pas à trouver ce que représent cette synthaxe...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed