Přidání vlastnosti v JavaScriptu

AndreaAndrea

V JavaScriptu jsou vlastnosti objektu dynamické, což znamená, že je můžete přidávat do objektu kdykoliv po jeho vytvoření. Lze je také kdykoli odstranit. Nejsou omezeny žádným předem stanoveným seznamem, schématem či třídou. Což je rozdíl například od Javě nebo C#, kde jsou členské proměnné objektu pevně stanovené a musí být definovány předem, před vytvořením objektu.

Například:

const person = {};

person.name = "John";
person.age = 30;
person.sayHello = function() {
  console.log("Hello, my name is " + this.name);
}

person.sayHello();  // vypíše "Hello, my name is John"

Obecně v javaScriptu můžete přidat vlastnost do objektu pomocí následujícího zápisu:

object.property = value;

Například:

const person = {};
person.name = "John";
person.age = 30;

Můžete také použít tzv. "shorthand notation" pro definování vlastností objektu při jeho vytváření:

const person = { name: "John", age: 30 };

Pokud chcete přidat vlastnost do objektu, který je uložen v proměnné, ale objekt sám není definován, můžete použít následující zápis:

variable.property = value;

Například:

let person;
person.name = "John";  // chyba: person is not defined

V takovém případě je třeba nejprve objekt vytvořit pomocí konstruktoru Object nebo jiným způsobem:

let person = {};
person.name = "John";  // OK

Mutabilita const se netýká atributů

Často se setkávám s nepochopením const u objektových typů. Do JS můžete přidat vlastnost do libovolného objektu, i když je objekt definován jako konstanta. Vlastnost objektu není konstantou, takže může být změněna nebo odstraněna, ale samotný objekt je neměnný (nedá se přiřadit jiný objekt).

const person = {};
person.name = "John";  // OK
person = { name: "Jane" };  // chyba: assignment to constant variable