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-2010, 17:55   #1
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
[javascript] oggetti

Sto utilizzando da poco gli oggetti in javascript
E ho notato che dopo aver impostato il valore di una variabile nel costruttore,
i metodi dello stesso oggetto che ho aggiunto al prototipo dello stesso oggetto
non possono accedere a tali valori, risulta undefined.

ES:

function ContexAdmin() {
this.URL = "XXX";
}
ContexAdmin.prototype.handleInsertContex = function(event) {
alert(this.URL);
}


alert stampa a video "undefined" invece che "XXX"


Come mai?
__________________
iPhone4, MacBook

Ultima modifica di DNAx86 : 13-09-2010 alle 18:17.
DNAx86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 08:55   #2
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Qualche idea sul perché I metodi non accedono ai valori ?
Nb: conosco bene la programmazione ad oggetti tradizionale.
__________________
iPhone4, MacBook
DNAx86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 09:02   #3
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
Qualche idea sul perché I metodi non accedono ai valori ?
Nb: conosco bene la programmazione ad oggetti tradizionale.
Non amo JS e non considero JS un linguaggio ad Oggetti (nonostante molti lo spacciano come tale :P); ma questa è una opinione strettamente personale.

Le variabili sono tutte LOCALI, ovvero se definite dentro una determinata funzione, hanno valore solo in essa.

Nel tuo esempio URL è stata definita nella funzione ContextAdmin() { e potrà essere usata SOLO li dentro. L'alternativa che puoi fare è far ritornare a ContextAdmin il valore e richiamare la funzione nell'altro"oggetto" JS.
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 10:57   #4
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Non amo JS e non considero JS un linguaggio ad Oggetti (nonostante molti lo spacciano come tale :P); ma questa è una opinione strettamente personale.

Le variabili sono tutte LOCALI, ovvero se definite dentro una determinata funzione, hanno valore solo in essa.

Nel tuo esempio URL è stata definita nella funzione ContextAdmin() { e potrà essere usata SOLO li dentro. L'alternativa che puoi fare è far ritornare a ContextAdmin il valore e richiamare la funzione nell'altro"oggetto" JS.
Sapevo già di molte cose strane sul modo in cui js gestisce gli oggetti,
Ma dopo quello che mi hai detto sono rimasto shoccato.

Ad ogni modo, quello che hai detto vale anche nelle variabili impostate nel costruttore?
Perché nel mio esempio ContexAdmin() è il costruttore.

Aggiungo poi che il libro dove ho studiato js mostra esempi simili al mio dove pero il metodo handleInsertContex() riesce magicamente ad accedere ai valori impostati nel costruttore.
È il libro che sbaglia o sono io?
__________________
iPhone4, MacBook
DNAx86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 11:10   #5
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Umh... ma come istanzi l'oggetto?

Non sono un ninja in javascript, ma questo a me funziona per esempio (appena provato su chrome):
Codice:
function MyObject() {
  this.x = 42;
}

MyObject.prototype.testFunction = function() {
  alert(this.x);
}

var obj = new MyObject();
obj.testFunction();
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 11:26   #6
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Quote:
Originariamente inviato da shinya Guarda i messaggi
Umh... ma come istanzi l'oggetto?

Non sono un ninja in javascript, ma questo a me funziona per esempio (appena provato su chrome):
Codice:
function MyObject() {
  this.x = 42;
}

MyObject.prototype.testFunction = function() {
  alert(this.x);
}

var obj = new MyObject();
obj.testFunction();
Cosi:
Codice:
var contexAdminObj = new ContexAdmin();
var ic = document.getElementById("ic");
ic.addEventListener("click", contexAdminObj.handleInsertContex, true);
inpratica quel metodo dell'oggetto in questione è un handler di un evento.
è sbagliata la logica?

è meglio che creo un oggetto il cui costruttore è l'handler (tipo java) ?

PS: l'alert funziona se chiamo contexAdminObj.handleInsertContex() direttamente, senza assegnarla all'evento
__________________
iPhone4, MacBook

Ultima modifica di DNAx86 : 14-09-2010 alle 11:33.
DNAx86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 11:32   #7
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
Sapevo già di molte cose strane sul modo in cui js gestisce gli oggetti,
Ma dopo quello che mi hai detto sono rimasto shoccato.

Ad ogni modo, quello che hai detto vale anche nelle variabili impostate nel costruttore?
Perché nel mio esempio ContexAdmin() è il costruttore.

Aggiungo poi che il libro dove ho studiato js mostra esempi simili al mio dove pero il metodo handleInsertContex() riesce magicamente ad accedere ai valori impostati nel costruttore.
È il libro che sbaglia o sono io?
Perdonami, mi era sfuggito il "this." prima di URL , troppo presto sul Forum :P

Se inizializzi l'oggetto dovrebbe funzionare come ha fatto shinya.

Codice PHP:
handleInsertContex 
Sarebbe? :|
Se è un metodo mancano le () :|

Se è un attributo lascio perdere e ritiro le due righe sopra scritte
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 11:43   #8
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Se è un metodo mancano le () :|

Se è un attributo lascio perdere e ritiro le due righe sopra scritte [/quote]

Si è un metodo però so che è giusto registrare un handler dentro addeventlistener senza scrivere le parentesi, questo perchè è una assegnamento di una funzione non è la chiamata di una funzione.
La funzione è chiamata quando ci sarà l'evento.

Tutto il problema è sorto nel mixare oggetti con hanler di eventi.
Ora tra i vostri consigli e una rilettura del mio libro ho capito:

cosi funziona:
Codice:
 ic.addEventListener("click", 
function(event){ contexAdminObj.handleInsertContex(event); }, 
true);
Quindi ho risolto
__________________
iPhone4, MacBook
DNAx86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 11:47   #9
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
cosi funziona:
Codice:
 ic.addEventListener("click", 
function(event){ contexAdminObj.handleInsertContex(event); }, 
true);
Quindi ho risolto
Mio dio, chi ha inventato questo linguaggio andrebbe preso e fucilato, insieme a Cox :| (IMHO).

Metti risolto nel titolo
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 11:59   #10
DNAx86
Member
 
Iscritto dal: Dec 2007
Città: Friuli
Messaggi: 154
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Mio dio, chi ha inventato questo linguaggio andrebbe preso e fucilato, insieme a Cox :| (IMHO).

Metti risolto nel titolo
è la prima cosa che ho pensato quando ho letto il capitolo sulle classi e sugli eventi

[OT]: Riguardo al titolo, come si fà la modifica al titolo di un thread in questo forum? Non vedo l'opzione
__________________
iPhone4, MacBook

Ultima modifica di DNAx86 : 14-09-2010 alle 12:03.
DNAx86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 12:08   #11
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da DNAx86 Guarda i messaggi
è la prima cosa che ho pensato quando ho letto il capitolo sulle classi e sugli eventi

[OT]: Riguardo al titolo, come si fà la modifica al titolo di un thread in questo forum? Non vedo l'opzione
Dopo un pò che è aperto non si può, me lo dimentico sempre (provenendo da altre Community mi scordo questa cosa :|)
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 15:15   #12
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Il problema l'hai beccato da solo, ovvero dando la funzione all'event listener viene chiamata in un altro contesto, più precisamente il contesto passa dal tuo oggetto a "window". (per contesto intendo lo scope delle variabili, il significato di "this").

Quello che hai effettuato tu si chiama closure, guardatele subito e ti si aprirà un magico mondo.
Senza saper usare le closure non si può dire davvero di usare javascript.


ps. javascript è ad oggetti, ma di tipo prototipale, basato sugli oggetti e non sulle classi.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2010, 18:59   #13
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da MEMon Guarda i messaggi
ps. javascript è ad oggetti, ma di tipo prototipale, basato sugli oggetti e non sulle classi.
Io e JS abbiamo divorziato anni fa
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2010, 10:58   #14
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Io e JS abbiamo divorziato anni fa
Guarda che non è poi cosi brutto come sembra... se poi usi librerie tipo mootools puoi scrivere codice piuttosto strutturato facilmente.
Prova anche a dare un'occhiata a javascript: The Good Parts di Crockford :P
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2010, 11:07   #15
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da shinya Guarda i messaggi
Guarda che non è poi cosi brutto come sembra... se poi usi librerie tipo mootools puoi scrivere codice piuttosto strutturato facilmente.
Prova anche a dare un'occhiata a javascript: The Good Parts di Crockford :P
Uso JQuery tutti i giorni.
Anni fa usavo mootools.

Questo non ha fatto altro che accelerare il mio divorzio nei confronti di questo linguaggio
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2010, 11:26   #16
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Povero javascript.... secondo me il vostro problema è... che è javaSCRIPT...
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2010, 11:42   #17
dojolab
Senior Member
 
L'Avatar di dojolab
 
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
Quote:
Originariamente inviato da astorcas Guarda i messaggi
Povero javascript.... secondo me il vostro problema è... che è javaSCRIPT...
O forse JAVAscript?
Sarà il nome? :P
__________________
Il mercatino di dojolab: VENDO UN PO' DI COSE! VAI
Vendo Libro Oracle 10g GUIDA COMPLETA della Oracle Press, ITALIANO: LINK
dojolab è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2010, 20:11   #18
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da dojolab Guarda i messaggi
Mio dio, chi ha inventato questo linguaggio andrebbe preso e fucilato, insieme a Cox :| (IMHO).

Metti risolto nel titolo
Javascript diventa molto piu' semplice se si smette di pensarlo come un linguaggio ad oggetti, e lo si usa come quello che e' in realta', ovvero un linguaggio funzionale con del malpensato zucchero sintattico per farlo sembrare ad oggetti.
Magicamente spariscono un sacco di comportamenti strani e illogici.
(poi la sintassi ci mette del suo, ma almeno la semantica diventa molto piu' pulita)
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 15-09-2010, 20:15   #19
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Javascript diventa molto piu' semplice se si smette di pensarlo come un linguaggio ad oggetti, e lo si usa come quello che e' in realta', ovvero un linguaggio funzionale con del malpensato zucchero sintattico per farlo sembrare ad oggetti.
Magicamente spariscono un sacco di comportamenti strani e illogici.
(poi la sintassi ci mette del suo, ma almeno la semantica diventa molto piu' pulita)
Rabbrividisco a quello che hai appena scritto, posso?


Javascript è moooolto malleabile, impone poca roba, ci si fa di tutto e in tutti i modi, è questo forse che spaventa un pò.
E' "plastico" diciamo.

Javascript comunque è fortemente ad oggetti, ma non lo dovete associare ai linguaggi OO che conoscete, non è basato sulle classi, non c'è quindi il concetto di classe, variabili private, incapsulamento, super classe, ereditarietà a classi ecc ecc.
E' di tipo prototipale, quindi totalmente diverso come concezione.

Posso assicurare comunque, che una volta imparato ad usarlo e a "domarlo" lo si ama da quanto è stupendamente "logico".

Ultima modifica di MEMon : 15-09-2010 alle 21:22.
MEMon è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2010, 23:24   #20
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da MEMon Guarda i messaggi
E' di tipo prototipale, quindi totalmente diverso come concezione.
Il fatto che sia prototipale non giustifica comportamenti strani come quello segnalato in questo thread. Perche' la chiamata
Codice:
obj.method()
da un risultato diverso da
Codice:
x = obj.method
x();
?
Se uno si accorge gli oggetti (e tutto il resto) non sono altro che hash-table,
che i metodi sono in realta' funzioni, che this e'il top di uno stack aggiornato in alcune condizioni particolari, tutto diventa piu' logico e semplice da capire
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è 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...
Per aumentare la competitività ne...
I nuovi MacBook con M5 Pro e Max usciran...
Mass Effect 5 dovrebbe ispirarsi di pi&u...
Windows 11, ancora problemi di spegnimen...
Amazon Seconda Mano: sconto extra del 10...
Apple perde altri talenti del settore AI...
Schede madri ASRock: nuove segnalazioni ...
Troppa IA su Windows 11: Microsoft pront...
CATL svela la batteria 5C che si auto-ri...
AirPods Pro 3 a prezzo record: ANC avanz...
Connettore fuso in diretta: il 12VHPWR c...
Google Pixel 10 Pro XL in offerta: il pi...
Prezzi delle RAM fuori controllo: aument...
Le scope elettriche punto di riferimento...
GTA: San Andreas è stato finito i...
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: 14:03.


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