Výukový program JS

JS HOME Úvod do JS JS Kam vést Výstup JS JS prohlášení Syntaxe JS Komentáře JS JS proměnné JS Let JS Const Operátoři JS JS aritmetika Zadání JS JS datové typy Funkce JS JS objekty Události JS JS struny JS String Methods JS String Search Šablony řetězců JS JS čísla Metody čísel JS JS Arrays Metody JS Array JS Array Sort Iterace pole JS JS Array Const JS Termíny Formáty data JS JS metody získávání data JS metody nastavení data JS Math JS Náhodný JS Booleans JS Srovnání Podmínky JS Přepínač JS JS Loop For JS Loop For In JS Loop For Of Zatímco JS Loop JS Break JS Iterables Sady JS Mapy JS Typ JS Konverze typu JS JS Bitwise JS RegExp Chyby JS Rozsah JS JS Zvedací zařízení Přísný režim JS JS toto klíčové slovo Funkce šipky JS JS třídy JS JSON Ladění JS Průvodce stylem JS JS Best Practices Chyby JS Výkon JS JS Reserved Words

Verze JS

Verze JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historie JS

JS objekty

Definice objektů Vlastnosti objektu Objektové metody Zobrazení objektu Objektové přístupové objekty Konstruktory objektů Prototypy objektů Iterovatelné objekty Sady objektů Mapy objektů Reference objektu

Funkce JS

Definice funkcí Funkční parametry Vyvolání funkce Volání funkce Funkce Použít Funkční uzávěry

JS třídy

Úvod do třídy Třídní dědičnost Třída Statická

JS Async

JS zpětná volání JS asynchronní JS Sliby JS Async/Await

JS HTML DOM

Úvod do DOM Metody DOM Dokument DOM Prvky DOM DOM HTML Formuláře DOM DOM CSS DOM animace Události DOM DOM Event Listener Navigace DOM DOM uzly Kolekce DOM Seznamy uzlů DOM

Kusovník prohlížeče JS

Okno JS Obrazovka JS Umístění JS Historie JS JS Navigator Popup Alert JS Časování JS Soubory cookie JS

Webová rozhraní API JS

Úvod do webového rozhraní API Web Forms API Webová historie API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

Úvod do AJAXu AJAX XMLHttp Požadavek AJAX Odpověď AJAX Soubor XML AJAX AJAX PHP AJAX ASP Databáze AJAX Aplikace AJAX Příklady AJAX

JS JSON

Úvod do JSON Syntaxe JSON JSON vs XML Datové typy JSON Analýza JSON JSON Stringify Objekty JSON Pole JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selektory jQuery HTML jQuery jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Příklady JS

Příklady JS JS HTML DOM Vstup HTML JS JS HTML objekty JS HTML události Prohlížeč JS Editor JS Cvičení JS JS kvíz Certifikát JS

JS Reference

Objekty JavaScriptu HTML DOM objekty


Objektové konstruktory JavaScriptu


Příklad

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

Za dobrou praxi se považuje pojmenování funkcí konstruktoru velkým prvním písmenem.


Typy objektů (plány) (třídy)

Příklady z předchozích kapitol jsou omezené. Vytvářejí pouze jednotlivé objekty.

Někdy potřebujeme " návrh " pro vytvoření mnoha objektů stejného "typu".

Způsob, jak vytvořit "typ objektu", je použít funkci konstruktoru objektu .

Ve výše uvedeném příkladu function Person()je funkce konstruktoru objektů.

Objekty stejného typu se vytvářejí voláním funkce konstruktoru s newklíčovým slovem:

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


Toto klíčové slovo

V JavaScriptu se nazývá thisobjekt, který „vlastní“ kód.

Hodnota this, je-li použita v objektu, je samotný objekt.

V konstruktoru funkce thisnemá hodnotu. Je to náhrada za nový objekt. Hodnota thiswill se stane novým objektem při vytvoření nového objektu.

Všimněte si, že thisto není proměnná. Je to klíčové slovo. Nemůžete změnit hodnotu this.


Přidání vlastnosti k objektu

Přidání nové vlastnosti k existujícímu objektu je snadné:

Příklad

myFather.nationality = "English";

Vlastnost bude přidána do myFather. Ne mé matce. (Ne namítá žádné jiné osobě).


Přidání metody k objektu

Přidání nové metody do existujícího objektu je snadné:

Příklad

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

Metoda bude přidána do myFather. Ne mé matce. (Ne namítá žádné jiné osobě).


Přidání vlastnosti do konstruktoru

Novou vlastnost nemůžete přidat do konstruktoru objektu stejným způsobem, jako přidáváte novou vlastnost k existujícímu objektu:

Příklad

Person.nationality = "English";

Chcete-li do konstruktoru přidat novou vlastnost, musíte ji přidat do funkce konstruktoru:

Příklad

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

Tímto způsobem mohou mít vlastnosti objektu výchozí hodnoty.


Přidání metody do konstruktoru

Vaše funkce konstruktoru může také definovat metody:

Příklad

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;
  };
}

Novou metodu nemůžete přidat do konstruktoru objektu stejným způsobem, jako přidáváte novou metodu k existujícímu objektu.

Přidání metod do konstruktoru objektu musí být provedeno uvnitř funkce konstruktoru:

Příklad

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;
  };
}

Funkce changeName() přiřadí hodnotu name vlastnosti lastName osoby.

Nyní můžete vyzkoušet:

myMother.changeName("Doe");

JavaScript ví, o které osobě mluvíte, když to „ nahradímyMother .


Vestavěné konstruktory JavaScriptu

JavaScript má vestavěné konstruktory pro nativní objekty:

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

Objekt Math()není v seznamu. Mathje globální objekt. Klíčové newslovo nelze použít na Math.


Věděl jsi?

Jak můžete vidět výše, JavaScript má objektové verze primitivních datových typů String, Numbera Boolean. Není ale důvod vytvářet složité objekty. Primitivní hodnoty jsou mnohem rychlejší:

Použijte řetězcové literály ""místo new String().

Použijte číselné literály 50místo new Number().

Použijte booleovské literály true / falsemísto new Boolean().

Použijte objektové literály {}místo new Object().

Použijte literály pole []namísto new Array().

Použijte vzorové literály /()/místo new RegExp().

Použijte funkční výrazy () {}místo new Function().

Příklad

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

Řetězcové objekty

Normálně jsou řetězce vytvářeny jako primitiva: firstName = "John"

Ale řetězce lze také vytvořit jako objekty pomocí newklíčového slova:
firstName = new String("John")

V kapitole JS Strings se dozvíte, proč by řetězce neměly být vytvářeny jako objekt .


Počet objektů

Normálně se čísla vytvářejí jako primitiva: x = 30

Čísla však lze také vytvořit jako objekty pomocí newklíčového slova:
x = new Number(30)

Přečtěte si, proč by čísla neměla být vytvářena jako objekt v kapitole JS Numbers .


Booleovské objekty

Normálně jsou booleany vytvářeny jako primitiva: x = false

Ale booleany lze také vytvořit jako objekty pomocí newklíčového slova:
x = new Boolean(false)

V kapitole JS Booleans se dozvíte, proč by se logické hodnoty neměly vytvářet jako objekt .