Objekty lze mezi sebou dědit pomocí .__proto__ Javascript - OOP, Prototypy

const o1 = {a: 1}
const o2 = {b: 2}
 
o2.__proto__ = o1
 
// nyni mohu přistupoval na o2.a i o2.b
// ale v o1 mám jen o1.a 
  • vlastnosti se u objektů dělí na “own” a “inherited”
    • spoustu metod na objektech mají v sobě “own” to znamená, že se ta metoda týká pouze vlastních vlastností

Klíč objektu může být jen string a symbol

// k objektu mohu přidávat vlastnosti i takhle:
const obj1 = {a: 1}
obj1.b = 12;

Deskriptory - pomocí nich mohu ovlivňovat vlastnosti vlastností objektů. Informace o konkrétní vlastnosti zjistím takto:

let descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
Object.defineProperty(o, 'a', {
	enumerable: false,
	writeable: true,
	get() {
		return Math.random() // o.a bude vždy dávat jiné random hodnoty
	}
})
  • get a set vlastnosti vlastnosti jsou dobré na kombinování hodnot jiných vlastností
  • lze definovat i více properties najednou pomocí Object.defineProperties
Object.defineProperties(user, { 
	name: { value: "John", writable: false }, 
	surname: { value: "Smith", writable: false }, 
	// ... 
});

Object.getPrototypeOf - dostanu “rodiče” objektu