Skip to main content

Inheritance with constructor function in javascript

Object literal like

var derived = {
    a: 10
};
be easily extended using
derived.__proto__ = base;
where base is

var base = {
    x : 5
};
But, what if we using constructor function?
We need to do like this

var Person = function (name) {
    this.name = name;
}
Person.prototype.sayHello = function () {
    console.log('Hello, I am '+this.name);
}
Person.prototype.getName = function () {
    return this.name;
}
var per = new Person('Manan');
per.sayHello(); //prints --> Hello, I am Manan

var Employee = function (name, company) {
    Person.call(this, name);
    this.company = company;
}
Employee.prototype.sayHello = function () {
    console.log('Hello, I am '+this.getName()+' and I am working at '+this.company);
}
Employee.prototype.__proto__ = Person.prototype;
var emp = new Employee('Manan', 'Integ');
emp.sayHello(); //prints --> Hello, I am Manan and I am working at Integ

Notice that we are calling Person function from Employee constructor function using Employee's this. This way whatever initializing properties of Person will be initialized and assigned to Employee's this. So Whatever properties should be in Person's object we have it in Employee's object.

Now, properties assigned to Person.prototype we need to get that too. To do so we assigned Person.prototype to Employee.prototype.__proto__. This creates prototype chain of emp object like below and emp object can access properties of Person.prototype though the chain.

emp
    |----   __proto__   ===  Employee.prototype
                            |----  __proto__   ===  Person.prototype

Comments

Popular posts from this blog

Basics of quantum computing: change of basis

Computing requires classical bits, which can hold a value of 0 or 1. Quantum computing gets benefit from superposition of quantum bit (qubit). Qubit is a representation of state of quantum object (electron, proton, photon, etc). The qubit holds a value between 0 and 1 while it is in superposition state. Superposition means the qubit possesses multiple values at the same time so we can harness its power for parallel computing. Once we try to measure the value it can be collapsed into either 0 or 1 based on probability. (Observer collapses wave function simply by observing.) Using bloch sphere, we can represent qubit physically. (The bloch sphere is a physical model to represent a spin state of qubit) A state vector can point to any direction from the center of the sphere. If a vector points to Z+ and Z-, it represents 0 and 1 state respectively. All other vectors represent superposition state in a Z basis. Now, if a vector points to X+, X-, Y+, Y-, all are at a 90-degree angle from ...

A deep understanding of neural network

Basics Neural network is a mathematical function to solve some programming problems which is almost impossible to be solved with conventional programming. Neural network consist of neurons and weights. Neurons are made up with activation function and holds output of the function called activation value. Weights are just values which connects one neuron to another. Neurons are grouped and forms a layer. Each layer is connected with other layer by weights. There are three kind of layers; input layer, hidden layer and output layer. Any neural network contains at least one hidden layer, though there might be more than one hidden layers are possible. Input layers accepts input, calculate activation values for next hidden layer, the next layer does same process and pass result to next of it. This goes on until output layer is reached.  Each layer calculates Z values using weight and activation. Using Z values activation of next layer is calculated. Once we get activation of output laye...

Monad: to programming from category theory

We have seen the summarized article "monad in programming" in the previous post. Let's find out what is a monad in category theory and how the concept became relevant for functional programming. First, we need to understand the basics of category theory. Category A category consists of objects and morphisms (relationships) between those objects. More of it, the morphisms should be composable too. Below is an example of a category. Each dot is an object and each arrow shows morphism from some object to another. As arrows are composable, if there is a morphism from object a to object b , and there is another morphism from b to c , then we can find a morphism from a to c .  If you notice, there is identity morphism too, it exists for each object, but we have shown it just for x . It is a morphism from an object to itself. If we compose identity morphism with any other morphism w , we get the same w in return. Functor A functor is a relationship between categories...