Toon posts:

new window['object']() in mozilla

Pagina: 1
Acties:

Verwijderd

Topicstarter
een variabele kan je ook als volgt aanroepen:
JavaScript:
1
2
var var1 = 'boe';
alert(window['var1']);  // boe

evenzo voor functies:
JavaScript:
1
2
3
4
function func1() {
  return('boe');
}
alert(window['func1']()); // boe

alleen nu werkt het met objecten in ie wel en in moz niet:
JavaScript:
1
2
3
4
5
6
7
function obj1 () {
}
obj1.prototype.shout = function {
  return('boe');
}
myObj = new window['obj1']();
myObj.shout();


doe ik iets fout? is hier misschien een workaround voor? of is dit eigenlijk compleet illegaal en doet ie het toevallig gewoon?

het is iig om een createObject(objname) functie te bouwen

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Misschien ligt het aan jouw moz, of je hebt ff blind je voorbeeld getypt ;) maar dit werkt hier prima:

code:
1
2
3
4
5
6
7
8
9
function obj1 () {
}

obj1.prototype.shout = function() {
  alert('boe');
}

myObj = new window['obj1']();
myObj.shout();

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
toch maar volgende keer weer de hele code strippen, het lag aan een fout in de code zo'n 100 regels eerder, ik was gewend dat moz accuratere foutmeldingen gaf denk ik :P

Verwijderd

Verwijderd schreef op 26 januari 2004 @ 20:15:
toch maar volgende keer weer de hele code strippen, het lag aan een fout in de code zo'n 100 regels eerder, ik was gewend dat moz accuratere foutmeldingen gaf denk ik :P
Weleens met Venkman gewerkt? Is ideaal om onverklaarbare errors te achterhalen.

Zie Svend Tofte voor een zeer uitgebreide tutorial.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Een beetje een zijpaadje ;) maar mozilla blijkt ook setters en getters via prototyping te kunnen koppelen, b.v.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Ding() {
}

Ding.prototype = {
   set dinges(arg) {
      alert('set dinges to:' + arg);
   },

   get dinges() {
      return 'niet!';
      // throw Error('mag niet!');
   }
}

ding = new Ding();
ding.dinges = 'test'; // "set dinges to: test"
alert(ding.dinges);   // "niet!"


IE geeft er helaas een vette error op ;) maar misschien kan het ooit gebruikt worden.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin