Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
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


BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
Rilasciati i primi dati raccolti dal tel...
Leica M-A Hammertone e Leica M11-P Hamme...
L'IA non sostituisce la creatività...
Anche Formula E cambia il calendario per...
Defender contro BYD Ti 7: il giudice d&a...
32GB di RAM DDR4 a un prezzo sorprendent...
La nuova lavagna interattiva di LG arriv...
Lo smartphone Samsung passa da 16:9 a 21...
OPPO Pad 5 Pro arriva in Italia: display...
80 TOPS in un palmo di mano: il nuovo Mi...
Motorola Razr Flex: il pieghevole che sf...
NVIDIA, Jensen Huang lascia dopo lo scan...
Honor 700 Pro con Snapdragon 8 Gen 5 e 1...
Dentro una macchina del caffè c'&...
Microsoft Classroom: compiti, voti e Cop...
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: 19:53.


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