Creare subclase cu extends
In JavaScript se pot crea subclase (ca o clasa copil al altei clase, denumita parinte) folosind cuvantul:
extends
.
Subclasa mosteneste si poate extinde proprietatile si metodele din clasa parinte.
Daca subclasa nu are constructor(), va folosi metoda constructor() din clasa parinte.
- Exemplu:
<div id='ex_res'>Shows response</div>
<script>
//Clasa parinte
class User {
constructor(name){
//seteaza proprietate
this.name = name;
}
//metoda
sayHi(){
return 'Hello '+ this.name;
}
}
//Subclasa
class Gamer extends User {
//metoda foloseste proprietatea name definita in clasa parinte
sayBye(){
return 'Goodbye '+ this.name;
}
}
//Utilizare
//creaza un obiect al subclasei
//transmite un argument deoarece foloseste constructor() din clasa parinte
let ob_gbr = new Gamer('MarPlo');
//apeleaza metoda sayHi() definita in clasa parinte (User)
var hi = ob_gbr.sayHi();
//apeleaza metoda definita in subclasa
var bye = ob_gbr.sayBye();
//adauga valorile de la 'hi' si 'bye' in Div #ex_res
document.getElementById('ex_res').innerHTML ='<h3>'+hi+'<br>'+bye+'</h3>';
</script>
Clase JS - Mostenire, super
Subclasa mosteneste proprietatile si metodele definite in clasa parinte (inclusiv metodele statice).
Daca exista constructor() in subclasa, inainte de a folosi cuvantul "
this" se aplica:
super()
.
Pentru a rescrie proprietati si metode din clasa parinte, se definesc iar in subclasa.
- Exemplu:
<div id='ex_res'>Shows response</div>
<script>
//Clasa parinte
class Parent {
constructor(name){
//seteaza proprietate
this.name = name;
}
//metoda
sayHi(){
return 'Hello '+ this.name;
}
}
//Subclasa
class Child extends Parent {
constructor(name){
//aplica super ca sa includa constructor() din clasa parinte, transmitand argumentul necesar
super(name);
//aici se pot rescrie sau adauga proprietati noi
this.site ='CoursesWeb.net';
}
//rescrie metoda din parinte
sayHi(){
return 'From Subclass, site: '+ this.site +'<br>Hello '+ this.name;
}
}
//Utilizare
//creaza un obiect al subclasei Child
let obj = new Child('MarPlo');
//apeleaza metoda sayHi(), rescrisa in clasa copil
var hi = obj.sayHi();
//afisaza valoarea de la 'hi' in Div #ex_res
document.getElementById('ex_res').innerHTML ='<h2>'+hi+'</h2>';
</script>
Metode de clase si super
Cuvantul
super
se foloseste pentru a apela metodele corespunzatoare din clasa de baza (parinte). Se foloseste cand nu se vrea rescrierea completa a unei metode, ci adaugarea de instructiuni noi la cele deja existente in metoda din clasa de baza.
Clasele furnizeaza cuvantul "super" pentru:
- super(parametri) - apeleaza constructor() din parinte, cu parametri necesari (numai in constructor()).
- super.metoda(parametri) - awpeleaza o metoda din clasa de baza. Returneaza valoarea returnata de metoda din clasa parinte.
- Exemplu:
<div id='ex_res'>Shows response</div>
<script>
//Clasa parinte
class Parent {
constructor(name){
//seteaza proprietate
this.name = name;
}
//metoda
sayHi(){
return 'Hello '+ this.name;
}
}
//Subclasa
class Child extends Parent {
constructor(name, site){
//aplica super ca sa includa constructor() din clasa parinte, transmitand argumentul necesar
super(name);
//aici se pot rescrie sau adauga proprietati noi
this.site = site;
}
//refoloseste metoda din parinte
sayHi(){
var hi = super.sayHi(); //retine datele returnate de metoda
//aici se pot adauga noi instructiuni
return hi +'<br>From: '+ this.site;
}
}
//Utilizare
//creaza un obiect al subclasei Child
let obj = new Child('MarPlo', 'CoursesWeb.net');
//apeleaza metoda sayHi() redefinita in clasa copil
var hi = obj.sayHi();
//afisaza valoarea de la 'hi' in Div #ex_res
document.getElementById('ex_res').innerHTML ='<h2>'+hi+'</h2>';
</script>
super la metode statice
Instructiunea "super" se poate aplica si la metode statice.
- Exemplu:
<script>
//clasa de baza
class Parent {
//metoda statica
static sayHi(name){
alert('Hello '+ name +' de la Parinte');
}
}
//Subclasa
class Child extends Parent {
//redefineste metoda statica
static sayHi(name, name2){
super.sayHi(name); //include metoda de la parent
alert('Hello '+ name2 +' de la Subclasa');
}
}
//apeleaza metoda statica din subclasa
Child.sayHi('MarPlo', 'Gamv');
</script>
Un Test simplu in fiecare zi
HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tip de <input> creaza un camp de text care trebuie sa contina doar numere?
type="text" type="number" type="date"<input type="number" name="points" min="5" max="80" />
Ce proprietate CSS permite modificarea transparentei unui element?
font-style opacity color#id {
filter:alpha(opacity=40); /* for IE */
opacity:0.4;
}
Clic pe functia care formateaza un numar la o anumita lungime de caractere.
toPrecision() exp() toFixed()var num = 12.84567;
alert( num.toPrecision(3) ); // 12.8
Ce functie aranjeaza aleator elementele dintr-un array?
natsort() shuffle() sort()$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net");
shuffle($lang);
var_export($lang); // array (0=>"coursesweb.net", 1=>"PHP", 2=>"JavaScript")
Indicati Superlativul cuvantului "good" (bun).
better best goodestShe is the best in our class.
- Ea este cea mai buna din clasa noastra.
Care este Superlativul cuvantului "bueno" (bun)?
el mejor más bueno muy buenoÉl es el mejor en nuestra clase.
- El este cel mai bun din clasa noastra.