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:
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>
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.
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