javascript js functions like old class example not ECMAScript 2015 ES6
AD MOB
// IF variable is not defined (or has a falsey value) THEN set it to an empty object.
// ELSE do nothing (technically speaking, variable gets assigned to itself)
var variable = variable || {} ;
function test(){
console.log(1);
}
// when called
test(); // 1
// or
var a = test;
a(); // 1
// or autocall if code executed
var test2 = function(){
console.log(2);
}
// test2 is undefined because the function test2 has no return value
// return string
function stringTest(param) {
return 'Hello ' + ' ' + param;
}
console.log(stringTest("Alice")); // Hello Alice
// return number
function numberTest(param) {
return 6 + param;
}
console.log(numberTest(5)); // 11
// or autocall if code executed
// function is like other variables
// parenthesis is for made groups or call functions.
// Immediately-Invoked Function Expression,
// or IIFE for short. It executes immediately after it’s created.
(function(){
// all your code here
var foo = function() {};
window.onload = foo;
// ...
})();
// foo is unreachable here (it’s undefined)
//////////////////////////////
// IIFE Immediately Invoked Funtion Expression
var greeting = function(name) {
return 'Hello ' + ' ' + name;
}('John');
console.log(greeting); // Hello John
console.log(typeof greeting); // string
console.log(greeting('Suzan')); // Uncaught TypeError: greeting is not a function
///////////////////////
var val = (function(){
var a = 0; // in the scope of this function
return function(x){
a += x;
return a;
};
})();
alert(val(10)); //10
alert(val(11)); //21
///////////////////////
// create the structure
var testHash = {
a : 1,
b : function(){
console.log(4);
},
c: function(param){
var num = param +5;
return num;
}
}
console.log(testHash.a); // 1
testHash.b(); // 4
testHash['b'](); // 4
testHash.c(7); // 12
/////////////////////////
// or function like class
function TestClass(n) {
this.some_property = n;
this.some_method = function() {
console.log(this.some_property);
};
}
var foo = new TestClass(3);
var bar = new TestClass(4);
foo.some_method(); // 3
bar.some_property += 2;
bar.some_method(); // 6
// console.log(some_property); // Uncaught ReferenceError: some_property is not defined
//////////////////////////
function Car(brand, year) {
return {
brand: brand,
year: year
}
}
var honda = Car("Honda", 1999);
console.log(honda.brand); // Honda
console.log(honda.year); // 1999
honda.brand = "Honda new Generation";
honda.year = 2021;
console.log(honda.brand); // Honda new Generation
console.log(honda.year); // 2021
var mazda = Car("Mazda",1987);
console.log(honda.brand); // Honda new Generation
console.log(mazda.brand); // Mazda
//////////////////////////////////////
// simplified code
var TEST_CLASS = TEST_CLASS || {};
TEST_CLASS.pokus = TEST_CLASS.pokus || (function() {
// -------------------------------------------------------------------------
// Private static variables and methods
// -------------------------------------------------------------------------
var privateStaticNumber = 5;
var privateStaticString = "My privateStaticString: ";
var privateStaticArray = [];
function privateStaticMethod(){
console.log('privateStaticMethod');
}
// CONSTRUCTOR CTOR
return function(config) {
// ----- private variables -----
var me = this,
isPaused = false;
this.privateStaticNumber = config.firstParam;
this.privateStaticString = privateStaticString + config.secondParam; // += produce: undefined I am from secondParam
this.privateStaticArray = config.thirtParam;
// ----- private methods -----
function getMode (mode, speed) {
// document.getElementById(mode).addEventListener('click', function () { snakeSpeed = speed; });
}
// ----- public variables -----
me.correct = 0;
me.wrong = 0;
// ----- public methods -----
me.setString = function(val) {
this.privateStaticString = val;
};
me.getString = function() {
return this.privateStaticString;
};
me.publicMethod = function(param){
console.log(param + ' from me.publicMethod()');
};
}; // end CTOR
})();
// end TEST_CLASS.pokus
var _me = _me || {};
var _me_test = new TEST_CLASS.pokus({firstParam:8, secondParam:" I am from secondParam", thirtParam:[1,3,9]});
// TEST_CLASS.pokus.privateStaticMethod(); // is not a function
// TEST_CLASS.pokus.publicMethod("Hola!"); // TEST_CLASS.pokus.publicMethod is not a function
// TEST_CLASS.publicMethod("Hola hej!"); // TEST_CLASS.publicMethod is not a function
// TEST_CLASS.pokus.publicMethod(" Hello!"); // is not a function
_me_test.publicMethod(" Hello!"); // Hello! from me.publicMethod()
console.log( _me_test.getString()); // My privateStaticString: I am from secondParam
console.log( _me_test.isPaused); // undefined
Date: 04.11.2020 - 23:1477LW NO topic_id
AD
Další témata ....(Topics)
Třídy - class v javascript
Něco málo opakování na úvod:
Proměnná (variable) je místo, kam si ukládáme čísla, řetězce(text, znaky), objekty.
Narazíte možná často, že tomu tak není a kód není ukončen a na dalším řádku je definice
jiné proměnné, ale nespoléhejte na to, že si s tím prohlížeč vždy poradí a řádně ukončujte bloky kódu středníkem!
Je třeba jí co nejdříve definovat, jinak je to na malér.
Pole (array) je místo, kam ukládáme víc proměnných za sebou (do pole můžeme ukládat i objekty).
Objekt zpravidla vytváříme pomocí třídy.
Objektů může by mnoho, ale třída, pomocí které jsou vytvořeny, tak ta může být jen jedna.
Co je to třída?
Třída je taková šablona pro ukládaní dat, nebo vykonávání příkazů.
Lze jí přirovnat k formuláři, nebo dotazníku, kde má object (osoba) vyplnit
jméno, příjmení a další osobní údaje.
Formulář bude mít pro všechny zúčastněné stejné položky pro vyplnění,
ale každá osoba (object) do něj zapíše jiné údaje.
Takže nejdříve si vytvoříme třídu PersonalData.
Třída začíná velkým písmenem a slova se oddělují Velkým
písmenem, nebo _ podtržítkem (pro lepší čitelnost).
Třídní proměnné musíme označit this tečkou a názvem proměnné.
Před jméno třídní proměnné je dobré (až nutné) vložit prefix podtržítko _ a název
proměnné _nameOfVariable a tím ji odlišit od ostatních proměnných, potulujících
se v dalším kódu.
a protože constructor třídy umožňuje přímo při vytovření novéh Objectu vložit
i základní údaje, tak toho musíme využít.
nebo přistoupit k datům a použít privátní funkci
nebo použít veřejnou funkci např. pro získání popisu co třída umí
Něco málo opakování na úvod:
Proměnná (variable) je místo, kam si ukládáme čísla, řetězce(text, znaky), objekty.
var str = "ahoj světe!";
Kód, který patří k deklaraci, či definici určité proměnné, ukončujeme středníkem;Narazíte možná často, že tomu tak není a kód není ukončen a na dalším řádku je definice
jiné proměnné, ale nespoléhejte na to, že si s tím prohlížeč vždy poradí a řádně ukončujte bloky kódu středníkem!
// takhle raději ne - v budoucnu byste také mohli předělávat mnoho stránek kódu
a = 2
b = 3
// takhle je to správně, n před názvem proměnné označuje,
// že si tam, v našem případě, ukládáme číslo (number)
// s pak řetězec (string)
var nA = 2;
var nB = 3;
var sHello = "Hello world!";
// typ proměnné bychom sice v dalším kódu mohli ověřit
// pomocí <b>if (typeof myVariable == 'string')</b> atd.
// ale je to zbytečná práce navíc a znepřehledňuje to kód.
Deklarace proměnné je zapsání proměnné aniž by jste do ní vložili data.Je třeba jí co nejdříve definovat, jinak je to na malér.
var myDeklarationOfVariable;
Definice proměnné znamená, že do proměnné vložíme - přiřadíme jí hodnotu.
var myDefinitionOfVariable = "Tak, a už jsi definovaná!";
Definovat proměnnou můžeme i prázdným řetězcem, nebo u čísel se zadává -1 a pak již
kontrolujeme v kódu, jestli se hodnota proměnné změnila.Pole (array) je místo, kam ukládáme víc proměnných za sebou (do pole můžeme ukládat i objekty).
var ar = new Array("ahoj", "světe", "čau", "lidi!");
Objekt (Object) je místo, kam si můžeme ukládat nejen data, ale může obsahovat i funkce atd.Objekt zpravidla vytváříme pomocí třídy.
Objektů může by mnoho, ale třída, pomocí které jsou vytvořeny, tak ta může být jen jedna.
Co je to třída?
Třída je taková šablona pro ukládaní dat, nebo vykonávání příkazů.
Lze jí přirovnat k formuláři, nebo dotazníku, kde má object (osoba) vyplnit
jméno, příjmení a další osobní údaje.
Formulář bude mít pro všechny zúčastněné stejné položky pro vyplnění,
ale každá osoba (object) do něj zapíše jiné údaje.
Takže nejdříve si vytvoříme třídu PersonalData.
Třída začíná velkým písmenem a slova se oddělují Velkým
písmenem, nebo _ podtržítkem (pro lepší čitelnost).
Třídní proměnné musíme označit this tečkou a názvem proměnné.
Před jméno třídní proměnné je dobré (až nutné) vložit prefix podtržítko _ a název
proměnné _nameOfVariable a tím ji odlišit od ostatních proměnných, potulujících
se v dalším kódu.
class PersonalData {
// constructor slouží k základnímu nasavení konkrétního Object-u - osoby, věci atd.
constructor(name,family_name, profession) {
// před privátní proměnné dávejte prefix podtržítko
// za čas to nejedenkrát oceníte
this._name = name;
this._family_name = family_name;
this._profession = profession;
// myVariable = profession; // error
}
// třída může obsahovat i funkce. Pokud před funkcí není označení static
// pak se jedná o privátní fukci a může se používat jen přes konkrétní Object
// tedy přes osoba = new PersonalData( parametry ....)
// osoba.showPrivateContent()
// může mít i parametry
showPrivateContent(param){
alert (param " " + this._name + " " + this._family_name + " " + this._profession);
}
// tuto funkci může použít každy, aniž by musel vytvářet Object (konkrétní osobu)
// stačí PersonalData.showPrivateContent(param) a už běží!
// funkce ale nemá přístup k osobním údajům konktrétních Object-ů
// může mít i parametry
static showPublicIfno(param){
alert("Hello! This class can stored private data about any singers! " + param);
}
}
Dále si vytvořím Object (osobu), která vystavíme novou šablonu (formulář - třídu)a protože constructor třídy umožňuje přímo při vytovření novéh Objectu vložit
i základní údaje, tak toho musíme využít.
var michaelJackson = new PersonalData("Michael","Jackson","singer");
Nyní si již můžeme něco zjistit o tomto Objectu ze zadaných údajů např. jméno:
var strNameOfObject = michaelJackson._name;
nebo přistoupit k datům a použít privátní funkci
michaelJackson.showPrivateContent();
nebo použít veřejnou funkci např. pro získání popisu co třída umí
PersonalData.showPublicIfno('Bye Bye!');
Tohle jsou některé metody objektu document
clear
createDocument
createDocumentFragment
createElement
createEvent
createEventObject
createRange
createTextNode
getElementById
/* nejpouzivanejsi metoda objektu document, ktera
ziska handle elementu dle jeho id*/
getElementByTagName
var e = document.getElementById('list');
e= e.getElementsByTagName('span');
i=0;
while(i < e.length){
e[i].style.color = "green";
}
write
document.write("some text");
Foreach fore each in javascript loop cycle example source code
Example code foreach for JavaScript.
var arr = new Array(1,2,3,4,5,6);// numbers or string put into array
for (var key in arr) {
window.alert("My array"
+ key
+ " = "
+ arr[key]);
}
// next example
arr.forEach(function(elem){
console.log(elem);
});
// next example
for (var i = 0; i < arr.length; i++) {
alert (arr[i]);
}
// next example for GECKO MOZILLA FIREFOX
var soucet = 0;
var obj = {var1: 5, var2: 13, var3: 8};
for each (var item in obj) {
soucet += item;
}
alert(soucet); // vysledek "26", coz je soucet 5+13+8
Each in jQuery get all document inputs type text and set value 0 if checkbox checked
function fc(th){
if( th.checked ){
$("input:text").each(
function() {
this.value = 0;
this.disabled = true;
}
);
}else{
$("input:text").each(
function() {
this.disabled = false;
}
);
}
<input type="checkbox" id="idCheck" onchange="fc(this);"> Checkbox
<input type="text" size="1" id="id1" value="0" />
<input type="text" size="1" id="id2" value="0" />
g | Global / najde všechny, nezastaví se po prvním nálezu |
m | Multiline / prohledá i v dalších řádcích |
i | Case insensitive / citlivý na velikost písmen |
x | Ignore whitespace / ignoruje všechny mezery a umožňuje vložení komentáře do regexu. Komentáře jsou označeny znakem "#". Pokud potřebujete zahrnout znak mezery ve vašem regexu musíte jej označit '\ ' |
s | Single line |
u | Unicode / \w+ již pak vybere celé slovo i když obsahuje například českou dikakritiku |
X | eXtended |
U | Ungreedy / např. a+ vybere jen první a z aaaaaa |
A | Anchor / např. a+ označí první výskyt a a všechny další a pokud jej následují holaaaahou už ne aaa |
J | Duplicate group names / regex může mít duplicitní názvy vzorů, ale každá skupina vyhledání má stále své vlastní ID. Npř. /(?<letter>a)(?<letter>b)/J Tyto dvě skupiny produkují vlastní zápas namísto jedné kombinované skupiny. ab bude rozděleno do dvou skupin. Full match bude ab |
regex for matching something if it is not preceded by something else
REGEX bude před použitím zřejmě nutno vložit mezi lomítka např. /regex/
Za ukončovací lomítka se dávají značky "flags" např. g - globální atd. viz v příspěvcích níže.
najde .round jen když není před ním Math
OK
a.round
c.round
NOT Math.round
regex if not followed by something
Vybere Math , za kterým NEnásleduje .round
OK
Math.pow, Math.cos
NOT
Math.round
Výše uvedené REGEX jsou vhodné například při hledání v souborech, kdy hledáme nějakou funkci stejného názvu, která není, nebo je přidružena např. k Math
REGEX bude před použitím zřejmě nutno vložit mezi lomítka např. /regex/
Za ukončovací lomítka se dávají značky "flags" např. g - globální atd. viz v příspěvcích níže.
(?<!Math)\.round
najde .round jen když není před ním Math
OK
a.round
c.round
NOT Math.round
regex if not followed by something
Math(?!\.round)
Vybere Math , za kterým NEnásleduje .round
OK
Math.pow, Math.cos
NOT
Math.round
Výše uvedené REGEX jsou vhodné například při hledání v souborech, kdy hledáme nějakou funkci stejného názvu, která není, nebo je přidružena např. k Math
Editace: 7.2.2021 - 09:37
Počet článků v kategorii: 77
Url:javascript-js-functions-example
AD