Introduco solo un elemento in più alla discussione. L'esigenza di creare getter e setter è sempre esistita in javascript, tant'è che sin dagli albori è sempre esistita una qualche sintassi che permettesse di farlo, l'unico problema è che non era condivisa. Netscape ad esempio aveva tuoOggetto.__defineGetter__ e tuoOggetto.__defineSetter__ (provvisoria già nella sintassi), le vecchie versioni di IE avevano __getsethandler (come puoi vedere, tutte sintassi provvisorie). Tutto ciò è l'alba di javascript, fine anni '90. Non è stato introdotto nulla di nuovo, è stata solo fatta un po' di chiarezza introdocuendo finalmente una sintassi condivisa. Ergo, fare il conservatore della situazione non ha molto senso visto che nel caso specifico si tratterebbe di conservare la babele delle sintassi e niente di più.Originariamente inviato da TrueLies
Perchè staremmo introducendo queste sintassi? Ottenere con un assegnamento quel che puoi ottenere con un richiamo a dun metodo, è davvero così mission critical?
E se lo è, come mai non ce ne siamo mai accorti prima e quali sarebbero le circostanze in cui questa criticità si rivela in tutta la sua urgenza?
Infatti non è principalmente rivolta a umani quella sintassi, ma a macchine. Ci sono casi in cui l'interprete si trova automaticamente ad assegnare un valore a una proprietà di un oggetto. Facendogli trovare un setter ti consenti di manovrarlo a tuo piacimento. Lo stesso dicasi per il getter.Originariamente inviato da TrueLies
ps oh, non ultimo il vecchio mantra della leggibilità e portabilità dei codici.
Se io scrivo:
x(4)
qualsiasi programmatore capisce che si sta sviluppando una procedura, e che potrebbe esserci altro in gioco.
ma se io uso defineProperty con un setter e dopo 500 righe scrivo
x=4
in quanti si ricorderanno che assegnando ad x io sto anche lanciando una funzione magari di 50 righe, visto che il codice mi occulta completamente la natura (non peregrina invero...) della cosa?![]()