Better object oriented pattern in javascript in so mistakes call be avoided in a better way very simple
check the code below
--------------------------------------------------------
https://stackblitz.com/edit/js-9vhtdm?file=index.js
//better ES5 object oriented in es5
//rules
//1. you can pass values in any order
//2. default value
//3. handle undefined in a better way throw new Error
function Hero(obj=undefined)
{
//if object is null return throw a new Error
if(obj===undefined)
{
throw new Error("Empty Object");
}
const {name,age}=obj
this.name=name;
this.age=age;
}
//now extend myhero class
function Myhero(obj=undefined)
{
//now call super class or parent class must
Hero.call(this,obj);
}
let P=Myhero.prototype=Object.create(Hero.prototype);
P.constructor=Myhero;
P.sayHello=function()
{
return `my name is => ${this.name} and my age is ${this.age}`;
}
//when u create a instance of Myhero class you can pass values using a object biggest benfit is you can pass value in any order
let H1=new Myhero({name:"manish",age:30});
console.log(H1.sayHello())
let H2=new Myhero({age:29,name:"deepak"});
console.log(H2.sayHello())
//--------------------------------------------ES6 way
class Monster
{
constructor(obj=undefined)
{
if(obj===undefined)
{
throw new Error("Empty Object");
}
const {name,age}=obj
this.name=name;
this.age=age;
}
}
console.log("---------------------------------------------------------------");
class XMonster extends Monster
{
constructor(obj=undefined)
{
super(obj);
}
sayHello()
{
return `my name is => ${this.name} and my age is ${this.age}`;
}
}
let M1=new XMonster({name:"manishX",age:30});
console.log(M1.sayHello())
let M1=new XMonster({age:29,name:"deepakY"});
console.log(M1.sayHello())
Comments
Post a Comment