SlideShare a Scribd company logo
1 of 27
OBJECT  ORIENTED  JAVASCRIPT guida per un mondo migliore Davide Cerbo http://jesty.it Stefano Linguerri http://www.eljeko.net
Una cattiva impressione
L'unione fa la forza JAVASCRIPT + PROTOTYPE
Perché usare Prototype ,[object Object]
Sintassi più chiara
Gestisce le incompatibilità trai vari browser
Fornisce diverse funzioni e oggetti di utilità
Permette lo sviluppo di Javascript non intrusivo
E' complementare a Script.aculo.us
Qualcosa di utile ,[object Object]
$$('...')  ->  Selettore CSS $$('.menu #submenu)   ritorna tutti gli elementi che hanno class submenu all'interno di  un elemento che ha id menu
Ajax.request(Url, {...}) ->  Esegue una richiesta AJAX, le graffe conterranno le opzioni della request:  new Ajax.Request(url, {onSuccess:  function(transport) {...}); Esistono anche altri metodi come: updater e periodicalUpdater.
Template  -> Permette di definire delle stringe parametrizzabili var t = new Template('Name: #{name}, surname: #{surname}'); var show = {name: 'Davide', surname: 'Cerbo'}; t.evaluate(show); //return “Name: Davide, surname: Cerbo”
Observer  -> Permette di osservare gli eventi su un elemento $('id').observe('click', function(element){...});
Di cosa abbiamo bisogno? ,[object Object]
Strutture dati complesse
Classi
Interfacce
Polimorfismo
Strutture dati complesse ,[object Object]
Enumerable  ->  sono liste iterabili con metodi come  each, map, find, select, etc... $A(...).each(function(e){ alert(e.id); }); $$('...') restituisce un Enumerable Sono tutte CLOSURE
Questione di classe ,[object Object],var  Person  = Class.create(); Person.prototype = { initialize: function(name) { this.name = name; }, say: function(message) { return this.name + ': ' + message; } }; var  jack  = new  Person (“Jack Maffai”); jack.say(“Hi Boy”); //return Jack Maffai: Hi boy! ,[object Object],var  Person  = Class.create({ initialize: function(name) { this.name = name; }, say: function(message) { return this.name + ': ' + message; } }); var  jack  = new  Person (“Jack Maffai”); jack.say(“Hi Boy”); //return Jack Maffai: Hi boy!
Estendiamo ,[object Object],var  Pirate  = Class.create(); Pirate.prototype = Object.extend(new Person(), { say: function(message) { return this.name + ': ' + message + ', yarr!'; } }); ,[object Object],var  Pirate  = Class.create(Person, { say: function($super, message) { return $super(message) + ', yarr!'; } }); new  Pirate (“Jack Maffai”).say(“Hi Boy!”); //say return: Hi Boy!, yarr!
Interfacce? Non ci sono e basta! Accontentiamoci delle classi E ricordiamoci che in Javascript vige la regola: “ If it walks like a duck and quacks like a duck, I would call it a duck.”
Al volo var john = new Pirate('Long John'); john.sleep(); // -> ERROR: sleep is not a method Person.addMethods({ sleep: function() { return this.say('ZzZ'); } }); john.sleep(); // -> "Long John: ZzZ, yarr!" Il metodo viene aggiunto a tutte le istanze e le sottoclassi di Pirate
DOMinare con Prototype Questo approccio deve cambiare il nostro modo di vedere la programmazione Javascript PROGRAMMAZIONE FUNZIONALE
Esempio ,[object Object],<table id=&quot;simonboard&quot;> <TR> <TD id=&quot;red&quot;></TD> <TD id=&quot;blue&quot;></TD> <TD id=&quot;fuchsia&quot;></TD> </TR> <TR> <TD id=&quot;black&quot;></TD> <TD id=&quot;green&quot;></TD> <TD id=&quot;aqua&quot;></TD> </TR> <TR> <TD id=&quot;gold&quot;></TD> <TD id=&quot;magenta&quot;></TD> <TD id=&quot;coral&quot;></TD> </TR> </table> ,[object Object],<script language=&quot;JavaScript&quot;> // $('simonboard') -> indica la tabella // 5 -> il numero massimo di quadrati da colorare new Board($('simonboard')).start(5); </script> Il colore predefinito per il quadrato Tabella da utilizzare

More Related Content

Viewers also liked

Consumer Business Intelligence
Consumer Business IntelligenceConsumer Business Intelligence
Consumer Business Intelligenceguestee0806
 
Tapestry 5 in Action Pratica
Tapestry 5 in Action Pratica Tapestry 5 in Action Pratica
Tapestry 5 in Action Pratica maraexception
 
NHL Troubleshooting Tool
NHL Troubleshooting ToolNHL Troubleshooting Tool
NHL Troubleshooting Toolntufts
 
Wicket Security Presentation
Wicket Security PresentationWicket Security Presentation
Wicket Security Presentationmrmean
 
Maraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w Chojnowie
Maraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w ChojnowieMaraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w Chojnowie
Maraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w Chojnowieamnesty07
 
測試一
測試一測試一
測試一qoo_
 
X Maraton Pisania Listów - Bircza
X Maraton Pisania Listów - BirczaX Maraton Pisania Listów - Bircza
X Maraton Pisania Listów - Birczaamnesty07
 
Tapestry 5 in Action Introduzione
Tapestry 5 in Action IntroduzioneTapestry 5 in Action Introduzione
Tapestry 5 in Action Introduzionemaraexception
 
X Maraton Pisania Listów Amnesty International
X Maraton Pisania Listów Amnesty InternationalX Maraton Pisania Listów Amnesty International
X Maraton Pisania Listów Amnesty Internationalamnesty07
 
GST 2008 Channel Marketing
GST 2008 Channel MarketingGST 2008 Channel Marketing
GST 2008 Channel Marketingchristian.kelley
 

Viewers also liked (10)

Consumer Business Intelligence
Consumer Business IntelligenceConsumer Business Intelligence
Consumer Business Intelligence
 
Tapestry 5 in Action Pratica
Tapestry 5 in Action Pratica Tapestry 5 in Action Pratica
Tapestry 5 in Action Pratica
 
NHL Troubleshooting Tool
NHL Troubleshooting ToolNHL Troubleshooting Tool
NHL Troubleshooting Tool
 
Wicket Security Presentation
Wicket Security PresentationWicket Security Presentation
Wicket Security Presentation
 
Maraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w Chojnowie
Maraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w ChojnowieMaraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w Chojnowie
Maraton Pisania Listów 2009 - Gimnazjum nr 2 im. Mikołaja Kopernika w Chojnowie
 
測試一
測試一測試一
測試一
 
X Maraton Pisania Listów - Bircza
X Maraton Pisania Listów - BirczaX Maraton Pisania Listów - Bircza
X Maraton Pisania Listów - Bircza
 
Tapestry 5 in Action Introduzione
Tapestry 5 in Action IntroduzioneTapestry 5 in Action Introduzione
Tapestry 5 in Action Introduzione
 
X Maraton Pisania Listów Amnesty International
X Maraton Pisania Listów Amnesty InternationalX Maraton Pisania Listów Amnesty International
X Maraton Pisania Listów Amnesty International
 
GST 2008 Channel Marketing
GST 2008 Channel MarketingGST 2008 Channel Marketing
GST 2008 Channel Marketing
 

Similar to Oo Javascript

Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance OptimizationAlessandro Martin
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi pluginPasquale Puzio
 
Luca Masini: Introduzione a GWT 2.0
Luca Masini: Introduzione a GWT 2.0Luca Masini: Introduzione a GWT 2.0
Luca Masini: Introduzione a GWT 2.0firenze-gtug
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacyTommaso Torti
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con ScalaFranco Lombardo
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Libraryjgiudici
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Libraryjgiudici
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Libraryjgiudici
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)jampslide
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
Task automation with grunt
Task automation with gruntTask automation with grunt
Task automation with gruntlucatume
 
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Marcello Missiroli
 
Consigli per iniziare tdd
Consigli per iniziare tddConsigli per iniziare tdd
Consigli per iniziare tddTassoman ☺
 
Mantenere una distribuzione Drupal attraverso test coverage: Paddle case study
Mantenere una distribuzione Drupal attraverso test coverage: Paddle case studyMantenere una distribuzione Drupal attraverso test coverage: Paddle case study
Mantenere una distribuzione Drupal attraverso test coverage: Paddle case studyDrupalDay
 
corso web developer - Introduzione a Javascript
corso web developer - Introduzione a Javascriptcorso web developer - Introduzione a Javascript
corso web developer - Introduzione a JavascriptRiccardo Piccioni
 

Similar to Oo Javascript (20)

Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
 
jQuery e i suoi plugin
jQuery e i suoi pluginjQuery e i suoi plugin
jQuery e i suoi plugin
 
Luca Masini: Introduzione a GWT 2.0
Luca Masini: Introduzione a GWT 2.0Luca Masini: Introduzione a GWT 2.0
Luca Masini: Introduzione a GWT 2.0
 
Applicazioni native in java
Applicazioni native in javaApplicazioni native in java
Applicazioni native in java
 
Dominare il codice legacy
Dominare il codice legacyDominare il codice legacy
Dominare il codice legacy
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
 
Javascript
JavascriptJavascript
Javascript
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Java Advanced
Java AdvancedJava Advanced
Java Advanced
 
Task automation with grunt
Task automation with gruntTask automation with grunt
Task automation with grunt
 
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
 
Consigli per iniziare tdd
Consigli per iniziare tddConsigli per iniziare tdd
Consigli per iniziare tdd
 
Java codestyle & tipstricks
Java codestyle & tipstricksJava codestyle & tipstricks
Java codestyle & tipstricks
 
Mantenere una distribuzione Drupal attraverso test coverage: Paddle case study
Mantenere una distribuzione Drupal attraverso test coverage: Paddle case studyMantenere una distribuzione Drupal attraverso test coverage: Paddle case study
Mantenere una distribuzione Drupal attraverso test coverage: Paddle case study
 
Jug 30 10 04 Jdo
Jug 30 10 04 JdoJug 30 10 04 Jdo
Jug 30 10 04 Jdo
 
corso web developer - Introduzione a Javascript
corso web developer - Introduzione a Javascriptcorso web developer - Introduzione a Javascript
corso web developer - Introduzione a Javascript
 

Oo Javascript