[JavaScript] Functie constructor en context

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
Hallo

Ik heb een object met wat properties in.
var o = { name: 'Sideshow' }
Vervolgens heb ik een functie constructor:
var f = new Function(funcBodyString)
Deze functie kan je "apply'en" zodanig dat this mijn object o is:
f.apply(o);
De funcBodyString kan dan iets bevatten in de aard van "this.name".

Nu komt mijn vraag: hoe kan ik het voor elkaar krijgen dat ik in de funcBodyString gewoon "name" kan gebruiken? Ik wil natuurlijk niet zelf de argumenten/properties declareren in de functieconstructor of via de apply, want die weet ik niet op voorhand.

Dit heb ik zelf gevonden:
https://www.bennadel.com/...-function-constructor.htm
Waar het er eigenlijk op neerkomt dat hij alle properties van het object dat ik als context wil overloopt en als var declareert in die dynamische functie.

Bestaat er geen beter alternatief? Iets dat niet inhoudt om zélf dynamisch variabelen of argumenten in een dynamische functie te proppen?

[ Voor 7% gewijzigd door SideShow op 05-01-2017 11:25 ]

Beste antwoord (via SideShow op 05-01-2017 12:34)


  • superschotje
  • Registratie: Juni 2010
  • Laatst online: 18-04 15:18
Had je deze opvolgpost al gevonden: https://www.bennadel.com/...-function-constructor.htm? Ze maken daar gebruik van het 'with'-keyword. Lijkt me een nette oplossing.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
1. Gebruik geen
JavaScript:
1
new Function("")
maar
JavaScript:
1
function(){}

2. Binnen de functie heet o.name dan gewoon this.name

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
De functie body is volledig dynamisch. Hoe kan ik dan function(){} gebruiken? Ik wil een functie aanmaken. Als je niet wil werken met eval, dan rest er toch enkel het maken van een functie via de constructor?

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • superschotje
  • Registratie: Juni 2010
  • Laatst online: 18-04 15:18
Had je deze opvolgpost al gevonden: https://www.bennadel.com/...-function-constructor.htm? Ze maken daar gebruik van het 'with'-keyword. Lijkt me een nette oplossing.

Acties:
  • 0 Henk 'm!

  • SideShow
  • Registratie: Maart 2004
  • Laatst online: 21-09 15:49

SideShow

Administrator

Topicstarter
Haha, daar moet ik echt van glimlachen - my JS senses are tingling
Dom dat ik die follow up niet gezien had.
Super! En bedankt iedereen

[ Voor 3% gewijzigd door SideShow op 05-01-2017 12:35 ]