Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2009, 19:27   #1
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
[Javascript] Object literal ?

Qualcuno conosce una guida online per object literal ? Ho trovato questo codice ma non ci capisco niente:

Codice:
var ciao = {
    versione: "0.11"
};
ciao.Base = new Class({
    initialize: function () {
        this.versione = ciao.versione
    },
    RegisterModule: function (a) {
        a.Base = this
    }
});


var boh = new ciao.Base();

Cos'è quel "new Class" ? Istanzia un' oggetto della classe Class ?

Non riesco a trovare niente su internet
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 19:47   #2
_Claudio
Senior Member
 
L'Avatar di _Claudio
 
Iscritto dal: Aug 2005
Messaggi: 579
Codice:
var ciao = {
    versione: "0.11"
};
ciao.Base = new Class({ /* classe Class, scelta infelice come nome */
    initialize: function () {
        this.versione = ciao.versione
    },
    RegisterModule: function (a) {
        a.Base = this
    }
});

var boh = new ciao.Base(); /* boh ora ha come tipo Class */
Purtroppo js ha una tipizzazione obrobriosa.
_Claudio è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 19:56   #3
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
Quote:
Originariamente inviato da _Claudio Guarda i messaggi
Codice:
var ciao = {
    versione: "0.11"
};
ciao.Base = new Class({ /* classe Class, scelta infelice come nome */
    initialize: function () {
        this.versione = ciao.versione
    },
    RegisterModule: function (a) {
        a.Base = this
    }
});

var boh = new ciao.Base(); /* boh ora ha come tipo Class */
Purtroppo js ha una tipizzazione obrobriosa.
and so ?

edit: ah non avevo letto i commenti

Ultima modifica di CercoAiutoo : 13-09-2009 alle 20:13.
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 21:52   #4
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
Ma come fa poi a creare una classe in quel modo ?
Non capisco la sintassi!!
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 22:46   #5
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quello è il framework mootools, non centra nulla con la classica sintassi javascript.

Se vuoi creare un oggetto literal devi fare in questo modo:
Codice:
var myObject={
	x:10,
	y:20,
	sum:function(a,b){
		return a+b;
	}
}
In questo modo hai creato UN singolo oggetto che disponde di due proprietà(x e y) e un metodo(sum).
Codice:
var x=myObject.x;  // x è 10
var z=myObject.sum(3,5); // z è 8
Se invece ti interessa creare una classa, e quindi istanziare i tuoi oggetti con new MyClass, allora il discorso è diverso, e leggermente più complesso perchè javascript è di tipo protipale.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 22:51   #6
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
Quote:
Originariamente inviato da MEMon Guarda i messaggi
Quello è il framework mootools, non centra nulla con la classica sintassi javascript.

Se vuoi creare un oggetto literal devi fare in questo modo:
Codice:
var myObject={
	x:10,
	y:20,
	sum:function(a,b){
		return a+b;
	}
}
In questo modo hai creato UN singolo oggetto che disponde di due proprietà(x e y) e un metodo(sum).
Codice:
var x=myObject.x;  // x è 10
var z=myObject.sum(3,5); // z è 8
Se invece ti interessa creare una classa, e quindi istanziare i tuoi oggetti con new MyClass, allora il discorso è diverso, e leggermente più complesso perchè javascript è di tipo protipale.
Grazie ho capito tutto
Complesso ? Fa niente... sai dove posso trovare qualche guida o tutorial al riguardo ?

Su internet non si trova quasi niente su object literal eppure è strausato
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 22:51   #7
_Claudio
Senior Member
 
L'Avatar di _Claudio
 
Iscritto dal: Aug 2005
Messaggi: 579
Mi sembrava anche a me una sintassi strana... ho ragionato per deduzione e sulla struttura del linguaggio...
_Claudio è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2009, 23:13   #8
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da CercoAiutoo Guarda i messaggi
Grazie ho capito tutto
Complesso ? Fa niente... sai dove posso trovare qualche guida o tutorial al riguardo ?

Su internet non si trova quasi niente su object literal eppure è strausato
Se cerchi su google javascript literal object trovi moltissima roba.

Complesso nel senso che è un pò diverso da come si ragiona di solito con i linguaggi OO, ti scrivo qualcosa.

Come ti ho detto javascript è prototipale nel senso che ogni classe contiene un "oggetto" chimato prototype il quale contiene tutti i metodi e talvolta anche le proprietà che suddetta classe dovrà avere.
Codice:
function MyClass(s){
	this.name=s;
}
MyClass.prototype.getName=function(){
	return this.name;
}
MyClass.prototype.setName=function(s){
	this.name=s;
}

var c=new MyClass("bla bla");
c.getName(); //  ritorna bla bla
COme vedi hai creato una classe MyClass, al suo prototype hai "dato" due metodi, in questo modo ogni istanza di MyClass possiede questi due metodi.
La particolarità del prototype è che se ora fai una cosa del genere:
Codice:
MyClass.prototype.clearName=function(){
	this.name="";
}

c.clearName(); // questo è possibile, magia della forma prototipale
Tutte le istanze di MyClass avranno a disposizione il nuovo metodo!

Ti starai adesso chiedendo come fare una bella ereditarietà della tua nuova e fiammante classe, ti viene sempre in aiuto il prototype.

Codice:
function Shape(vertices){
	this.vertices=vertices;
	this.color="black";
}
Shape.prototype.setColor=function(c){
	this.color=c;
}


function Square(side){
	Shape.apply(this,4);
	this.side=side;
}
Square.prototype=new Shape;
Square.prototype.constructor=Square;
Square.prototype.calcArea=function(){
	return this.side*this.side;
}

var sq=new Square(10);
sq.setColor("white");  //possibile perchè ha ereditato il metodo
sq.calcArea();  //return 100

sq instanceof Square;  //return true
sq instance of Shape;  //return true, è una eredità a tutti gli effetti!!
In questo modo crei due splendide classi, Shape e Square, la seconda estende la prima aggiungendo nuove carattersistiche(calcArea), il tutto attraverso il prototype.
In particolare come vedi viene assegnato al prototype di Square una istanza di Shape, in questo modo Square ottiene il prototype di Shape.
Ricorda poi di riassegnare il constructor a Square, in quanto dopo l'operazione
Codice:
Square.prototype=new Shape;
anche il constructor di Square diventa quello di Shape, e ciè non va bene.
Il constructor come dice la parola stessa è il costruttore, quello che contiene il codice da eseguire quando si creano nuove istanze con new.

Nel costruttore di Square puoi noatre una cosa strana
Codice:
Shape.apply(this,4);
Questo non fa altro che eseguire il costruttore di Shape nello scope di Square, per farla semplice è come se in Java avresti fatto
Codice:
super(4);   //super riferito a Shape
sperando che tu sia pratico di Java...

Ultima modifica di MEMon : 13-09-2009 alle 23:19.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2009, 00:25   #9
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
Bene credo di aver capito
Avevo letto da qualche parte infatti che tramite prototype era possibile diciamo estendere dinamicamente una classe.

L' unica cosa che non ho capito è che MyClass, Shape e Square sono funzioni... perchè le chiami classi ? O forse tu hai indicato solo i costruttori delle classi ?
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2009, 01:04   #10
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da CercoAiutoo Guarda i messaggi
Bene credo di aver capito
Avevo letto da qualche parte infatti che tramite prototype era possibile diciamo estendere dinamicamente una classe.

L' unica cosa che non ho capito è che MyClass, Shape e Square sono funzioni... perchè le chiami classi ? O forse tu hai indicato solo i costruttori delle classi ?
Non sono funzioni, sono classi. Ok la differenza è lieve, diciamo che ogni funzione in javascript è una classe.

Codice:
function doSomethng(){
	// some stuff
}
Questa è ovviamente una funzione, ma è anche una classe, in particolare è il costruttore della classe, infatti il codice //some stuff viene eseguito in entrambi i modi:
Codice:
doSomething();  // usata come semplice funzione

var o=new doSomething();  //usata come costruttore di una classe
In javascript la vera e propria classe non esiste, esistono gli oggetti.

Ultima modifica di MEMon : 14-09-2009 alle 01:19.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2009, 01:18   #11
CercoAiutoo
Member
 
Iscritto dal: Jul 2009
Messaggi: 125
ah ecco ora è tutto chiaro grazie
CercoAiutoo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Ora la spesa con Cortilia si può fare di...
Una scoperta che cambia la nanotecnologi...
I marchi "figli" non bastano: ...
Windows 11 e problemi di avvio: il Patch...
Logitech, super offerte gaming su Amazon...
Upgrade PC più conveniente: su Am...
Il cast della serie TV di God of War va ...
La nuova serie TV targata HBO di Harry P...
Da anime a kolossal: il film live action...
Un computer nascosto nei vestiti: la nuo...
Il prete influencer Don Alberto lascia i...
Ultima chiamata per gli utenti Fitbit: d...
Acer Nitro V 16 AI scende a 1.399€: 200€...
Addio NTLM su Windows 11: perché ...
LG OLED G4 da 65'', super ribasso di pre...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v