MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Verificarea Existentei si Iterarea Prin Metode si Proprietati

La verificarea și definirea dinamică a unor noi proprietăți și metode într-un obiect, poate fi important să verificăm în prealabil dacă acestea există. În JavaScript, se poate utiliza operatorul in. Acesta are sintaxa următoare:

"proprietate|metoda" in obiect

În ghilimele se specifică numele proprietății sau metodei, iar după in se specifică numele obiectului. Dacă o proprietate sau metodă cu un astfel de nume există, operatorul returnează true. În caz contrar, returnează false.

De exemplu, să verificăm dacă într-un obiect există anumite proprietăți:

const user = {};
user.name = "Tom";
user.age = 26;
user.print = function() {
   console.log(this.name);
   console.log(this.age);
};

const hasNameProp = "name" in user;
console.log(hasNameProp); // true - proprietatea "name" există în user

const hasWeightProp = "weight" in user;
console.log(hasWeightProp); // false - în user nu există proprietatea sau metoda cu numele "weight"

Prin expresia "name" in user verificăm dacă obiectul user are proprietatea "name", iar rezultatul verificării este atribuit constantei hasNameProp. Ulterior, verificăm similar existența proprietății "weight".

Similar, putem verifica și existența metodelor:

const hasPrintMethod = "print" in user;
console.log(hasPrintMethod); // true - în user există metoda "print"

O metodă alternativă constă în verificarea valorii undefined. Dacă o proprietate sau metodă este undefined, atunci aceasta nu este definită:

const hasNameProp = user.name!==undefined;
console.log(hasNameProp); // true
const hasWeightProp = user.weight!==undefined;
console.log(hasWeightProp); // false

Și deoarece obiectele sunt de tipul Object, având toate metodele și proprietățile acestuia, obiectele pot utiliza și metoda hasOwnProperty(), care este definită în tipul Object:

const hasNameProp = user.hasOwnProperty("name");
console.log(hasNameProp); // true
const hasPrintMethod = user.hasOwnProperty("print");
console.log(hasPrintMethod); // true
const hasWeightProp = user.hasOwnProperty("weight");
console.log(hasWeightProp); // false

Iterarea prin Proprietăți și Metode

Cu ajutorul unui ciclu for putem parcurge un obiect asemenea unui array și putea obține toate proprietățile și metodele sale, împreună cu valorile acestora:

const tom = {
   name: "Tom",
   age: 26,
   print(){
       console.log(``Name: ${this.name}  Age: ${this.age}``);
   }
};

for(const prop in tom) {
   console.log(prop, " : ", tom[prop]);
}

Și, la rularea consolei în browser, se va afișa următorul rezultat:

name : Tom
age : 26
print : print(){
        console.log(`Name: ${this.name}  Age: ${this.age}`);
}

Funcții Object.entries, Object.keys, Object,values

Cu ajutorul funcțiilor suplimentare Object.entries, Object.keys și Object,values, poți obține toate proprietățile (inclusiv metodele) unui obiect și valorile acestora.

Object.entries()

Funcția Object.entries() primește un obiect ca parametru și returnează un array de perechi "nume_proprietate - valoare", unde fiecare pereche proprietate-valoare este reprezentată ca un array. De exemplu:

const tom = {
   name: "Tom",
   age: 26,
   print(){
       console.log(`Name: ${this.name}  Age: ${this.age}`);
   }
};
 
for(const prop of Object.entries(tom)) {
   console.log(prop);
}

const tom = { name: "Tom", age: 26, print(){ console.log(`Name: ${this.name} Age: ${this.age}`); } }; for(const prop of Object.entries(tom)) { console.log(prop); }

Rezultatul în consolă:

["name", "Tom"]
["age", 26]
["print", ƒ]

Object.keys()

Funcția Object.keys() permite obținerea unui array cu numele tuturor proprietăților unui obiect. De exemplu, luăm obiectul tom definit mai sus:

const tom = {
   name: "Tom",
   age: 26,
   print(){
       console.log(`Name: ${this.name}  Age: ${this.age}`);
   }
};
console.log(Object.keys(tom)); // ["name", "age", "print"]

Prin urmare, poți parcurge această serie și obține valorile proprietăților:

for (const prop of Object.keys(tom)) {
   const value = tom[prop];    // obținem valoarea proprietății pe baza numelui
   console.log(prop, value);
}

Rezultatul în consolă:

name Tom
age 26
print ƒ print(){
       console.log(`Name: ${this.name}  Age: ${this.age}`);
   }

Object.values()

Funcția Object.values() returnează un array care conține toate valorile proprietăților obiectului.

const tom = {
   name: "Tom",
   age: 26,
   print(){
       console.log(`Name: ${this.name}  Age: ${this.age}`);
   }
};
console.log(Object.values(tom)); // ["Tom", 26, print()]
← Lecția anterioară Lecția următoare →