The relationship between JS constructor and instantiation and prototype introduction

The relationship between JS constructor and instantiation and prototype introduction

1. Constructor and instantiation

When our programming is object-oriented, the first process is abstraction => then instantiation. For example, we abstract a person and I know the basic information of the person. Name, age, gender, etc.

We abstract first, and after the abstraction is completed, we instantiate.

2. What is the relationship between constructor and instantiation?

//This custom constructor is in the abstract function Person(name,age,sex){

    this.name=name;

    this.age=age;

    this.sex=sex;

    this.say=function(){

        console.log("My name is",name)

    }

}

// This process is instantiation let per1=new Person('司藤',300,'女');

per1.say(); //Call //let per1=new Person('司藤',300,'女');

Through the above line of code.

We can draw a conclusion:

The relationship between the constructor and the instance object is:

Instance objects need to be created through constructors.

At the same time: we can know that the constructor of the instance object is the constructor

Let's prove this statement is correct; the above code does not change.

console.log( per1.constructor===Person ) //Returns true

Fully explain: The statement that the constructor of an instance object is the constructor is correct.

3. Is per1.say equal to per2.say?

 function Person(name,age,like) {

    this.name=name;

    this.age=age;

    this.like=like;

    this.say=function(){

        console.log('I can skip meals');

    }

}

var per1=new Person("司藤",300,'玩');

var per2=new Person('白浅','10000','玩');

per1.say();

per2.say();

console.log( per1.say == per2.say ) //false

4. per1.say is not equal to the conclusion drawn by per2.say

Because console.log( per1.say == per2.say ) //false

We can draw a conclusion.

That is, per1.say() and per2.say() do not call the same method.

Are their contents equal?

console.log( per1.say()==per2.say() ) //true

The description content is equal

5. Example code problem

5.1 Problems with the code

function Person(name,age,like) {

    this.name=name;

    this.age=age;

    this.like=like;

    this.say=function(){

        console.log('I can skip meals');

    }

};

for (var index = 0; index < 100; index++) {

    var per=new Person("司藤",300,'玩');

    per.say();

}

This piece of code: It opens up 100 spaces in memory. Each space has a say method. But each say method is different. But their output is the same. In other words, the execution logic is the same. This results in a waste of space. So in the project, this results in a waste of space.

Can we optimize it?

5.2 Optimize code to solve space waste

function comSay(){

    // Execute the same logic console.log('I can skip meals')

};



function Person(name,age,like) {

    this.name=name;

    this.age=age;

    this.like=like;

    this.say=comSay; //Do not add brackets};

var per1=new Person("司藤",300,'玩');

var per2=new Person('白浅','10000','玩');

console.log( per1.say==per2.say ) //true

This way we save space. Each time it is called, it is the same method.

5.3 Using this method, we can also use the prototype method

function Person(name,age,like) {

    this.name=name;

    this.age=age;

    this.like=like;

};

Person.prototype.comSay=function(){

    console.log('I can skip meals')

}

var per1=new Person("司藤",300,'玩');

var per2=new Person('白浅','10000','玩');

console.log( per1.comSay==per2.comSay ) //true

// We can also solve data sharing through prototypes

The role of the prototype: data sharing and space saving.

This concludes this article on the relationship between JS constructors and instantiations and the introduction of prototypes. For more information on the relationship between JS constructors and instantiations and the introduction of prototypes, please search previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Detailed explanation of JavaScript prototype and examples
  • An article to help you understand Js inheritance and prototype chain
  • Summary and practice of javascript prototype chain diagram
  • Handwriting implementation of new in JS
  • Detailed description of the function of new in JS
  • How much do you know about JavaScript's constructor, prototype, prototype chain and new?

<<:  Introduction to the use of this in HTML tags

>>:  Detailed examples of how to use the box-shadow property in CSS3

Recommend

5 common scenarios and examples of JavaScript destructuring assignment

Table of contents Preface 1. Extract data 2. Alia...

HTML Basics: HTML Content Details

Let's start with the body: When viewing a web ...

JavaScript to achieve simple drag effect

This article shares the specific code of JavaScri...

Detailed explanation of MySQL covering index

concept If the index contains all the data that m...

Small problem with the spacing between label and input in Google Browser

Code first, then text Copy code The code is as fol...

Detailed explanation of small state management based on React Hooks

Table of contents Implementing state sharing base...

Five ways to traverse JavaScript arrays

Table of contents 1. for loop: basic and simple 2...

404 error occurs when accessing the homepage of tomcat started in Docker mode

Scenario: When starting tomcat in docker (version...

Node uses async_hooks module for request tracking

The async_hooks module is an experimental API off...

MySQL 8.0 upgrade experience

Table of contents Preface 1. First completely uni...

Introducing icons by implementing custom components based on Vue

Preface In project development, there are many wa...