In JavaScript you can create subclasses (as a child class of another class) with the extends
keyword.
The subclass inherits and can extend the properties and methods defined in parent class.
If the subclass has no constructor(), it will be used the constructor() of the parent class.
<div id='ex_res'>Shows response</div> <script> //Base class class User { constructor(name){ //set property this.name = name; } //method sayHi(){ return 'Hello '+ this.name; } } //Subclass class Gamer extends User { //method that uses the name property defined in parent class sayBye(){ return 'Goodbye '+ this.name; } } //Usage //set an object instance of subclass //it needs an argument because it is used the parent constructor() let ob_gbr = new Gamer('MarPlo'); //calls the sayHi() method defined in the parent class (User) var hi = ob_gbr.sayHi(); //calls the method defined in subclass var bye = ob_gbr.sayBye(); //shows the value of 'hi' and 'bye' in Div #ex_res document.getElementById('ex_res').innerHTML ='<h3>'+hi+'<br>'+bye+'</h3>'; </script>
The subclass inherits the properties and methods defined in parent class (including static methods).
If there is a constructor present in subclass, it needs to first call super()
before using "this".
To rewrite in subclass some properties and methods from parent class, just define them again in subclass.
<div id='ex_res'>Shows response</div> <script> //Base class class Parent { constructor(name){ //set property this.name = name; } //method sayHi(){ return 'Hello '+ this.name; } } //Subclass class Child extends Parent { constructor(name){ //apply super to include parent constructor and pass in the name parameter super(name); //here you can rewrite or define properties this.site ='CoursesWeb.net'; } //rewrite method from parent sayHi(){ return 'From Subclass, site: '+ this.site +'<br>Hello '+ this.name; } } //Usage //set an object instance of subclass Child let obj = new Child('MarPlo'); //calls the sayHi() method, rewrited in child class var hi = obj.sayHi(); //shows the value of 'hi' in Div #ex_res document.getElementById('ex_res').innerHTML ='<h2>'+hi+'</h2>'; </script>
The super
keyword is used to call corresponding methods of super class. It is used when you don't want to totally replace the parent method, but to add new instructions to it.
Classes provide "super" keyword for that.
<div id='ex_res'>Shows response</div> <script> //Base class class Parent { constructor(name){ //set property this.name = name; } //method sayHi(){ return 'Hello '+ this.name; } } //Subclass class Child extends Parent { constructor(name, site){ //apply super to include parent constructor and pass in the name parameter super(name); //here you can rewrite or define properties this.site = site; } //reuse method from parent sayHi(){ var hi = super.sayHi(); //gets data returned by parent method //here you can add new instructions return hi +'<br>From: '+ this.site; } } //Usage //set an object instance of subclass Child let obj = new Child('MarPlo', 'CoursesWeb.net'); //calls the sayHi() method redefined in the Child class var hi = obj.sayHi(); //shows the value of 'hi' in Div #ex_res document.getElementById('ex_res').innerHTML ='<h2>'+hi+'</h2>'; </script>
<script> //Base class class Parent { //static method static sayHi(name){ alert('Hello '+ name +' from parent'); } } //Subclass class Child extends Parent { //redefine the static method static sayHi(name, name2){ super.sayHi(name); //include the method from parent alert('Hello '+ name2 +' from subclass'); } } //calls the static method from subclass Child.sayHi('MarPlo', 'Gamv'); </script>
<ul> <li>http://coursesweb.net/html/</li> <li>http://coursesweb.net/css/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net