Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Le funzioni Core

Uno sguardo ravvicinato al cuore di MooTools
Uno sguardo ravvicinato al cuore di MooTools
Link copiato negli appunti

Il "core" di MooTools è una componente fondamentale contenente funzionalità di base che vengono utilizzate e riutilizzate largamente in tutti gli altri file, intermedi ed avanzati. Le funzioni core, contrassegnate dal simbolo "$" iniziale, sono funzioni globali. Questo significa che possono essere utilizzate in qualsiasi punto all'interno della nostra applicazione senza problemi relativi allo scope.

Vediamo subito la lista completa di tutte le funzioni core offerte da MooTools:

$chk:permette di verificare se il valore passatole come parametro esiste o è pari a 0. In caso positivo restituisce true, altrimenti false.

	$chk(0);	// true
	$chk(false); // false
	

$clear: azzera il timeout e/o l'intervallo precedentemente impostati tramite i metodi Function::delay e Function::periodical.

$defined: restituisce true se il valore passatogli è definito, altrimenti restituisce false.

$arguments: crea e sostituisce una funzione che a sua volta restituisce l'argomento presente nella posizione indicata dal parametro di ingresso (di valore intero).

	// third diventa una funzione che restituisce l'argomento presente nella posizione 2
	var third = $arguments(2);
	
	// alert "ancora ciao"
	alert(third("ciao", 24, "ancora ciao", [10, 20]));
	

$empty: restituisce una funzione vuota. Spesso viene utilizzata per creare funzioni (vuote) nelle opzioni dei costruttori Class che rappresentano gli eventi (come onStart, onComplete, e cosi via).

$lambda: crea e restituisce una funzione che ha a sua volta il compito di restituire il valore (di qualsiasi tipo) che passiamo come argomento.

	// usata in questo modo $lambda crea e restituisce una funzione che restituisce false, 
	// rendendo i link "myLinks" non cliccabili
	myLinks.addEvent('click', $lambda(false));
	

$extend: copia tutte le proprietà del secondo oggetto (secondo argomento) all'interno del primo oggetto (primo argomento), che viene restituito nella forma "estesa". Le proprietà aventi uguali keyword vengono sovrascritte.

	var first = { first: 'a', second: 'b' };
	var second = { first: 'c', third: 'd'};
	
	// first diventa: { first: 'c', second: 'b', third: 'd'}
	$extend(first, second);
	

$merge: "fonde" tutti gli oggetti passati come argomenti in modo ricorsivo e restituisce l'oggetto risultante, senza modificare gli oggetti originali.

	var obj1 = {a: 0, b: 1};
	var obj2 = {c: 2, d: 3};
	var obj3 = {a: 4, d: 5};
	
	// merged è pari a: {a: 4, b: 1, c: 2, d: 5}
	var merged = $merge(obj1, obj2, obj3);
	

$each: permette di iterare su oggetti che normalmente non sono array iterabili. Questa funzione accetta tre argomenti. Il primo rappresenta il nostro oggetto su cui vogliamo iterare, il secondo è una funzione che viene eseguita per ogni elemento del nostro oggetto e il terzo è l'oggetto che assume il valore "this" all'interno della funzione.

	var myObj = {first: "Sunday", second: "Monday", third: "Tuesday"};
	
	$each(myObj, function(value, key) {
		alert("The " + key + " day of the week is " + value);
	});
	

$pick: restituisce il primo argomento definito tra quelli passati.

	// restituisce 'ciao'
	$pick(false, false, 'ciao', 'ancora ciao');
	

$random: restituisce un valore random intero compreso tra il dato intervallo.

	// restituisce un numero random compreso tra 2 e 90
	$random(2, 90);
	

$splat: converte l'argomento passato in un array (se non lo è già) e lo restituisce.

	// restituisce ["ciao"]
	$splat("ciao");
	

$time: restituisce il tempo corrente sotto forma di timestamp.

$try: accetta un numero variabile di funzioni come argomenti e restituisce il valore restituito dalla prima funzione che viene portata correttamente a termine. Se tutte le funzioni falliscono restituisce null.

	var result = $try(function(){
		return oggetto.inesistente;
	}, function(){
		return oggetto.che.nonesiste;
	}, function(){
		return false;
	});
	
	// result = false
	

$type: restituisce sotto forma di stringa il tipo dell'oggetto passato in ingresso. Oltre ai normali valori come 'array', 'string', eccetera, questa funzione identifica tipi più specifici e particolari come 'collection', 'class', 'textnode', 'whitespace' e cosi via.

		$type('ciao'); // 'string'
		$type(Fx);	   // 'class'
	

Determinare il tipo di browser in uso

Un altro strumento globale che abbiamo a disposizione nella parte core è l'Hash (vedremo nelle successive lezioni la tipologia e le caratteristiche di questo costruttore) Browser. Tramite la sua proprietà Engine, è possibile effettuare dei controlli sul motore di rendering utilizzato dal browser per verificare il tipo di browser che sta eseguendo la nostra applicazione. Vediamo un esempio:

// true se il browser è IE7
if(Browser.Engine.trident5) { ... }

// true se il browser è Firefox
if(Browser.Engine.gecko) { ... }

// true se il browser è Safari 3
if(Browser.Engine.webkit420) { ... }

Ovviamente la classificazione è molto dettagliata, per questo vi rimando alla pagina del documentazione ufficiale dove trovate tutti i possibili valori utilizzabili. L'Hash Browser inoltre, possiede anche le keywords "Features" e "Platform" per identificare i plug-in abilitati e il tipo di sistema operativo in uso.

Conclusione

Queste sono tutte le funzioni "core" offerte da MooTools che possiamo utilizzare in qualsisiasi posizione nelle nostre applicazioni. Nella prossima lezione vedremo come viene utilizzato e come utilizzare il costruttore "factory" attorno a cui ruota tutto il framework: Class.

Ti consigliamo anche