Sto scrivendo un'API JavaScript e, per un caso particolare, mi chiedo quale approccio sia il più sexy. Facciamo un esempio: scrivendo un VideoPlayer , aggiungo un metodo getCurrentTime che dà il tempo trascorso dall'inizio.
-
Il primo approccio dichiara semplicemente
getCurrentTimecome segue:getCurrentTime():numberdove
numberè il tipo numero nativo . Questo approccio include un eventoCURRENT_TIME_CHANGEDin modo che gli utenti API possano aggiungere callback per essere al corrente delle variazioni di orario. L'ascolto di questo evento sarebbe il seguente:myVideoPlayer.addEventListener(CURRENT_TIME_CHANGED, function(evt){ console.log ("current time = "+evt.getDispatcher().getCurrentTime()); }); -
Il secondo approccio dichiara
getCurrentTimein modo diverso:getCurrentTime():CustomNumberdove
CustomNumberè un oggetto numero personalizzato , non quello nativo. Questo oggetto personalizzato invia un eventoVALUE_CHANGEDquando il suo valore cambia, quindi non c'è bisogno dell'eventoCURRENT_TIME_CHANGED! Basta ascoltare l'oggetto restituito per le variazioni di valore! L'ascolto di questo evento sarebbe il seguente:myVideoPlayer.getCurrentTime().addEventListener(VALUE_CHANGED, function(evt){ console.log ("current time = "+evt.getDispatcher().valueOf()); });Tieni presente che
CustomNumberha un metodovalueOfche restituisce un numero nativo che consente di utilizzare l'oggettoCustomNumberrestituito come numero, quindi:var result = myVideoPlayer.getCurrentTime()+5;funzionerà!
Quindi nel primo approccio, ascoltiamo un oggetto per un cambiamento nel valore della sua proprietà. Nella seconda ascoltiamo direttamente la proprietà per cambiare il suo valore. Ci sono più pro e contro per ogni approccio, voglio solo sapere quale degli sviluppatori preferirebbe usare!