oggetti JavaScript
In JavaScript, gli oggetti sono re. Se si capisce oggetti, si capisce JavaScript.
In JavaScript, quasi "tutto" è un oggetto.
- Booleans possono essere oggetti (o dati primitive trattati come oggetti)
- Numbers possono essere oggetti (o dati primitive trattati come oggetti)
- Strings possono essere oggetti (o dati primitive trattati come oggetti)
- Dates sono oggetti sempre
- Maths sono oggetti sempre
- Regular espressioni sono oggetti sempre
- Arrays sono oggetti sempre
- Functions sono oggetti sempre
- Objects sono oggetti
In JavaScript, tutti i valori, ad eccezione di valori primitivi, sono oggetti.
I valori primitivi sono: stringhe ("John Doe") , i numeri (3.14), true, false, null , e undefined .
Gli oggetti sono variabili contenente le variabili
variabili JavaScript possono contenere valori singoli:
Gli oggetti sono variabili troppo. Ma gli oggetti possono contenere molti valori.
I valori sono scritti come nome: coppie di valori (nome e il valore separati da due punti).
Un oggetto JavaScript è un insieme di valori denominati
Proprietà oggetto
I valori denominati, in oggetti JavaScript, sono chiamati proprietà.
Proprietà | Valore |
---|---|
firstName | John |
lastName | Doe |
age | 50 |
eyeColor | blue |
Oggetti scritte come coppie nome-valore sono simili a:
- array associativi in PHP
- Dizionari in Python
- tabelle hash in C
- mappe hash in Java
- Gli hash in Ruby e Perl
Metodi dell'oggetto
I metodi sono azioni che possono essere eseguite sugli oggetti.
Le proprietà degli oggetti possono essere entrambi i valori primitivi, altri oggetti e funzioni.
Un metodo oggetto è proprietà di un oggetto che contiene una definizione di funzione.
Proprietà | Valore |
---|---|
firstName | John |
lastName | Doe |
age | 50 |
eyeColor | blue |
fullName | function() {return this.firstName + " " + this.lastName;} |
oggetti JavaScript sono contenitori per valori denominati, chiamati proprietà e metodi.
Si impara di più sui metodi nei prossimi capitoli.
Creazione di un oggetto JavaScript
Con JavaScript, è possibile definire e creare i propri oggetti.
Ci sono modi diversi per creare nuovi oggetti:
- Definire e creare un unico oggetto, utilizzando un oggetto letterale.
- Definire e creare un unico oggetto, con la parola chiave nuova.
- Definire un costruttore di oggetto, e quindi creare oggetti del tipo costruito.
In ECMAScript 5, un oggetto può anche essere creato con la funzione Object.create() .
L'utilizzo di un oggetto letterale
Questo è il modo più semplice per creare un oggetto JavaScript.
L'utilizzo di un oggetto letterale, entrambi definire e creare un oggetto in una dichiarazione.
Un letterale oggetto è una lista di coppie nome: valore (come age:50 ) all'interno delle parentesi graffe {} .
L'esempio seguente crea un nuovo oggetto JavaScript con quattro proprietà:
Gli spazi e le interruzioni di riga non sono importanti. Una definizione di un oggetto può estendersi su più righe:
Esempio
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
Prova tu stesso " Utilizzando il nuovo JavaScript Chiave
L'esempio seguente crea un nuovo oggetto JavaScript con quattro proprietà:
Esempio
var
person = new Object();
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
Prova tu stesso " I due esempi sopra fanno esattamente la stessa. Non vi è alcuna necessità di utilizzare new Object() .
Per semplicità, leggibilità e velocità di esecuzione, utilizzare il primo (il metodo oggetto letterale).
L'utilizzo di un costruttore dell'oggetto
Gli esempi di cui sopra sono limitate in molte situazioni. Essi creano solo un singolo oggetto.
A volte ci piace avere un "tipo di oggetto" che può essere usato per creare molti oggetti di un tipo.
Il metodo standard per creare un "tipo di oggetto" è quello di utilizzare una funzione oggetto costruttore:
Esempio
function person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
var
myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
Prova tu stesso " La funzione di cui sopra (persona) è un costruttore dell'oggetto.
Una volta che avete un costruttore di oggetto, è possibile creare nuovi oggetti dello stesso tipo:
var myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
Il this Chiave
In JavaScript, la cosa chiamata this , è l'oggetto che "possiede" il codice JavaScript.
Il valore di this , quando usato in una funzione, è l'oggetto che "possiede" la funzione.
Il valore di this , quando viene utilizzato in un oggetto, è l'oggetto stesso.
Il this parola chiave in un costruttore di oggetto non ha un valore. E 'solo un sostituto per il nuovo oggetto.
Il valore di this diventerà il nuovo oggetto quando il costruttore viene utilizzato per creare un oggetto.
Si noti che questa non è una variabile. È una parola chiave. Non è possibile modificare il valore di this .
Built-in Costruttori JavaScript
JavaScript ha costruttori integrati per oggetti nativi:
Esempio
var x1 = new Object(); // A new Object object
var x2 = new String(); // A new String object
var x3 = new Number(); // A new Number object
var x4 = new Boolean() // A new Boolean object
var x5 = new Array(); // A new Array object
var x6 = new RegExp(); // A new RegExp object
var x7 = new Function(); // A new Function object
var x8 = new Date(); // A new Date object
Prova tu stesso " Il Math() oggetto non è nella lista. La matematica è un oggetto globale. La nuova parola chiave non può essere utilizzato su Math.
Lo sapevate?
Come si può vedere, JavaScript ha oggetto le versioni dei tipi di dati primitivi stringa, un numero, e booleani.
Non vi è alcun motivo per creare oggetti complessi. valori primitivi eseguono molto più veloce.
E non vi è alcun motivo per utilizzare la nuova Array() . Utilizzare letterali di array invece: []
E non vi è alcun motivo per utilizzare la nuova RegExp() . Utilizzare letterali modello invece: /()/
E non vi è alcun motivo per utilizzare la nuova Function() . Usare espressioni di funzione, invece: function () {} .
E non vi è alcun motivo per utilizzare new Object() . Utilizzare letterali oggetto invece: {}
Esempio
var x1 = {}; // new object
var x2 = ""; // new primitive string
var x3 = 0; // new primitive number
var x4 = false; // new primitive boolean
var x5 = []; // new array object
var x6 = /()/ // new regexp object
var x7 = function(){}; // new function object
Prova tu stesso " Oggetti JavaScript sono mutabili
Gli oggetti sono mutabili: Essi sono oggetto di riferimento, non per valore.
Se y è un oggetto, la seguente dichiarazione non creerà una copia di y:
var x = y; // This will not create a copy of y.
L'oggetto x non è una copia di y. E 'y. Sia X che Y punti allo stesso oggetto.
Eventuali modifiche y cambierà anche x, perché xey sono lo stesso oggetto.
Esempio
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
var x = person;
x.age = 10; // This will change both x.age and person.age
Prova tu stesso "