Esercitazione JS

JS CASA JS Introduzione JS Dove si va Uscita JS Dichiarazioni JS Sintassi JS Commenti JS Variabili JS JS Let JS Cost Operatori JS JS aritmetica Assegnazione JS Tipi di dati JS Funzioni JS Oggetti JS Eventi JS Corde JS Metodi di stringa JS Ricerca di stringhe JS Modelli di stringhe JS Numeri JS Metodi numerici JS Matrici JS Metodi array JS Ordinamento matrice JS Iterazione dell'array JS Cost. array JS Date JS Formati data JS Metodi di acquisizione della data JS Metodi di impostazione della data JS JS matematica JS Casuale JS booleani Confronti JS Condizioni JS JS Switch Ciclo JS per JS Loop per In Ciclo JS per di JS Loop mentre JS Break Iterabili JS Insiemi JS Mappe JS Tipo JS Conversione del tipo JS JS bit a bit JS RegExp Errori JS Ambito JS JS sollevamento Modalità rigorosa JS JS questa parola chiave Funzione freccia JS Classi JS JS JSON Debug JS Guida allo stile JS Migliori Pratiche JS Errori di JS Prestazioni JS Parole riservate JS

Versioni JS

Versioni JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Storia di JS

Oggetti JS

Definizioni di oggetti Proprietà dell'oggetto Metodi dell'oggetto Visualizzazione di oggetti Accessori per oggetti Costruttori di oggetti Prototipi di oggetti Iterabili di oggetti Insiemi di oggetti Mappe degli oggetti Riferimento all'oggetto

Funzioni JS

Definizioni delle funzioni Parametri di funzione Invocazione di funzione Chiamata di funzione Funzione Applica Chiusure di funzioni

Classi JS

Introduzione alla classe Eredità di classe Classe statica

JS Async

Richiamate JS JS asincrono JS Promesse JS Async/Attendere

JS HTML DOM

DOM Introduzione Metodi DOM Documento DOM Elementi DOM DOM HTML Moduli DOM DOM CSS Animazioni DOM Eventi DOM Ascoltatore di eventi DOM Navigazione DOM Nodi DOM Collezioni DOM Elenchi di nodi DOM

Distinta base del browser JS

Finestra JS Schermo JS Posizione JS Storia di JS Navigatore JS Avviso popup JS JS tempismo Biscotti JS

API Web JS

Introduzione all'API Web API dei moduli Web API Cronologia web API di archiviazione Web API Web Worker API di recupero Web API di geolocalizzazione web

JS AJAX

Introduzione all'Ajax AJAX XMLHttp Richiesta AJAX Risposta dell'AJAX File XML AJAX AJAX PHP AJAX ASP Database AJAX Applicazioni AJAX Esempi AJAX

JS JSON

Introduzione JSON Sintassi JSON JSON contro XML Tipi di dati JSON Analisi JSON JSON Stringify Oggetti JSON Matrici JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selettori jQuery jQuery HTML jQuery CSS jQuery DOM

Grafica JS

Grafica JS Tela JS JS Plotly JS Chart.js Grafico di Google JS JS D3.js

Esempi JS

Esempi JS JS HTML DOM Input HTML JS Oggetti HTML JS Eventi HTML JS Browser JS Editore JS Esercizi JS Quiz J.S Certificato JS

Riferimenti JS

Oggetti JavaScript Oggetti HTML DOM


Costruttori di oggetti JavaScript


Esempio

function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}

È considerata buona pratica nominare le funzioni di costruzione con una prima lettera maiuscola.


Tipi di oggetti (Progetti) (Classi)

Gli esempi dei capitoli precedenti sono limitati. Creano solo oggetti singoli.

A volte abbiamo bisogno di un " progetto " per creare molti oggetti dello stesso "tipo".

Il modo per creare un "tipo di oggetto" consiste nell'utilizzare una funzione di costruzione di oggetti .

Nell'esempio sopra, function Person()c'è una funzione di costruzione di oggetti.

Gli oggetti dello stesso tipo vengono creati chiamando la funzione di costruzione con la newparola chiave:

const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");


La parola chiave questa

In JavaScript, la cosa chiamata thisè l'oggetto che "possiede" il codice.

Il valore di this, quando utilizzato in un oggetto, è l'oggetto stesso.

In una funzione di costruzione thisnon ha un valore. È un sostituto del nuovo oggetto. Il valore di thisdiventerà il nuovo oggetto quando viene creato un nuovo oggetto.

Nota che thisnon è una variabile. È una parola chiave. Non è possibile modificare il valore di this.


Aggiunta di una proprietà a un oggetto

Aggiungere una nuova proprietà a un oggetto esistente è semplice:

Esempio

myFather.nationality = "English";

La proprietà verrà aggiunta a mio padre. Non a mia madre. (Non a qualsiasi altra persona oggetti).


Aggiunta di un metodo a un oggetto

Aggiungere un nuovo metodo a un oggetto esistente è semplice:

Esempio

myFather.name = function () {
  return this.firstName + " " + this.lastName;
};

Il metodo verrà aggiunto a mio padre. Non a mia madre. (Non a qualsiasi altra persona oggetti).


Aggiunta di una proprietà a un costruttore

Non puoi aggiungere una nuova proprietà a un costruttore di oggetti nello stesso modo in cui aggiungi una nuova proprietà a un oggetto esistente:

Esempio

Person.nationality = "English";

Per aggiungere una nuova proprietà a un costruttore, devi aggiungerla alla funzione di costruzione:

Esempio

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.nationality = "English";
}

In questo modo le proprietà dell'oggetto possono avere valori predefiniti.


Aggiunta di un metodo a un costruttore

La tua funzione di costruzione può anche definire metodi:

Esempio

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.name = function() {
    return this.firstName + " " + this.lastName;
  };
}

Non puoi aggiungere un nuovo metodo a un costruttore di oggetti nello stesso modo in cui aggiungi un nuovo metodo a un oggetto esistente.

L'aggiunta di metodi a un costruttore di oggetti deve essere eseguita all'interno della funzione di costruzione:

Esempio

function Person(firstName, lastName, age, eyeColor) {
  this.firstName = firstName; 
  this.lastName = lastName;
  this.age = age;
  this.eyeColor = eyeColor;
  this.changeName = function (name) {
    this.lastName = name;
  };
}

La funzione changeName() assegna il valore di name alla proprietà lastName della persona.

Ora puoi provare:

myMother.changeName("Doe");

JavaScript sa di quale persona stai parlando "sostituendo" questo con myMother .


Costruttori JavaScript integrati

JavaScript ha costruttori integrati per oggetti nativi:

new String()    // A new String object
new Number()    // A new Number object
new Boolean()   // A new Boolean object
new Object()    // A new Object object
new Array()     // A new Array object
new RegExp()    // A new RegExp object
new Function()  // A new Function object
new Date()      // A new Date object

L' Math()oggetto non è nell'elenco. Mathè un oggetto globale. La newparola chiave non può essere utilizzata su Math.


Lo sapevate?

Come puoi vedere sopra, JavaScript ha versioni oggetto dei tipi di dati primitivi String, Numbere Boolean. Ma non c'è motivo di creare oggetti complessi. I valori primitivi sono molto più veloci:

Usa stringhe letterali ""invece di new String().

Usa numeri letterali 50invece di new Number().

Usa letterali booleani true / falseinvece di new Boolean().

Usa valori letterali oggetto {}invece di new Object().

Usa valori letterali array []invece di new Array().

Usa i valori letterali del modello /()/invece di new RegExp().

Usa le espressioni di funzione () {}invece di new Function().

Esempio

let x1 = "";             // new primitive string
let x2 = 0;              // new primitive number
let x3 = false;          // new primitive boolean

const x4 = {};           // new Object object
const x5 = [];           // new Array object
const x6 = /()/          // new RegExp object
const x7 = function(){}; // new function

Oggetti stringa

Normalmente, le stringhe vengono create come primitive: firstName = "John"

Ma le stringhe possono anche essere create come oggetti usando la newparola chiave:
firstName = new String("John")

Scopri perché le stringhe non dovrebbero essere create come oggetti nel capitolo JS Strings .


Numero di oggetti

Normalmente, i numeri vengono creati come primitive: x = 30

Ma i numeri possono anche essere creati come oggetti usando la newparola chiave:
x = new Number(30)

Scopri perché i numeri non dovrebbero essere creati come oggetti nel capitolo Numeri JS .


Oggetti booleani

Normalmente, i booleani vengono creati come primitivi: x = false

Ma i booleani possono anche essere creati come oggetti usando la newparola chiave:
x = new Boolean(false)

Scopri perché i booleani non dovrebbero essere creati come oggetti nel capitolo JS Booleans .