Salve a tutti
Per mio uso e consumo sto creando una piccola scorciatoia per modificare dinamicamente molte proprietà di più elementi del dom contemporaneamente. L'idea è quella di utilizzare una sintassi abbreviata. Avrei potuto fare come fa jQuery, con una sintassi del tipo selettore(".classe").applicaProprieta({altezza: qualcosa, larghezza: qualcosa, etc. etc}), ma mi sembrava un inutile spreco di oggetti e di cicli. Così sono arrivato a una sintassi del tipo selettore(".classe").applicaProprieta(altezza, qualcosa)(larghezza, qualcosa)(etc. etc.).
Ne è venuto fuori questo abbozzo, che sembrerebbe funzionare abbastanza bene:
Il problema però sorge nell'eventualità di renderlo modulare. Gli oggetti che creo contengono attualmente due metodi utili: oggetto.inlineStyle() e oggetto.attributes(), che vengono assegnati loro dalla funzione domQuery(). Immaginiamo di voler aggiungere un altro metodo: dovrei modificare la funzione domQuery() per contemplarlo.codice:<!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Esempio</title> <script type="text/javascript"> // "use strict"; function setStyles (sProp, sVal) { for (var nEl = 0, nLen = this.nodes.length; nEl < nLen; this.nodes[nEl].style[sProp] = sVal, nEl++); this.follow = setStyles; return this; } function setAttribs (sAttrib, sVal) { for (var nEl = 0, nLen = this.nodes.length; nEl < nLen; this.nodes[nEl][sAttrib] = sVal, nEl++); this.follow = setAttribs; return this; } function getSelectors () { return this.selectors; }; function getNodes () { return this.nodes; }; function domQuery (sSelectors) { var oQuery = new Function("return arguments.callee.follow.apply(arguments.callee, arguments);"); oQuery.selectors = sSelectors; oQuery.nodes = document.querySelectorAll(sSelectors); oQuery.attributes = setAttribs; oQuery.inlineStyle = setStyles; oQuery.follow = getNodes; oQuery.toString = getSelectors; oQuery.valueOf = getNodes; return oQuery; } </script> </head> <body> <div class="testClass">Lorem ipsum</div> Testo di prova</p> <div class="testClass">dolor sit amet</div> <script type="text/javascript"> domQuery(".testClass").attributes("lang", "it")("title", "Testo di prova").inlineStyle("backgroundColor", "black")("color", "white")("width", "100px")("height", "50px"); </script> </body> </html>
Quello che non riesco proprio a capire è se esiste un modo per assegnare un prototipo a questi miei oggetti di modo che modificando il prototipo a piacimento durante il caricamento della pagina decido quali metodi includere e quali no. Spero sia chiaro qual è il problema![]()


Rispondi quotando
, vedi tu se puo esserti utile


